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
错误,因为 $result
是 false
,而不是对象。
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);