PHP MySQLi查询

示例

该query函数采用有效的SQL字符串,并直接针对数据库连接执行它$conn

面向对象的风格

$result = $conn->query("SELECT * FROM `people`");

程序风格

$result = mysqli_query($conn, "SELECT * FROM `people`");

警告

这里的一个普遍问题是,人们只会执行查询并期望它能够工作(即返回mysqli_stmt对象)。由于此函数仅使用字符串,因此您首先要自己构建查询。如果SQL根本没有任何错误,则MySQL编译器将失败,此时此函数将返回false

$result = $conn->query('SELECT * FROM non_existent_table'); // 此查询将失败
$row = $result->fetch_assoc();

上面的代码将产生E_FATAL错误,因为$result是false,而不是对象。

PHP致命错误:fetch_assoc()在非对象上调用成员函数

程序错误是相似的,但不是致命的,因为我们只是违反了函数的期望。

$row = mysqli_fetch_assoc($result); // 与上一个查询相同

您将从PHP获得以下消息

mysqli_fetch_array() 期望参数1为mysqli_result,给定布尔值

您可以通过先进行测试来避免这种情况

if($result) $row = mysqli_fetch_assoc($result);