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'); // This query will fail
$row = $result->fetch_assoc();

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

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

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

$row = mysqli_fetch_assoc($result); // same query as previous

你将从 PHP 获得以下消息

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

你可以先通过测试来避免这种情况

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