1.案例:
使用mysqli操作数据库时,
//查询操作
function dql($sql){
$conn=@new mysqli('localhost','root','root','forum');
if ($conn->connect_error) {
die('数据库连接错误!');
}
$result=$conn->query($sql);
$arr=$result->fetch_array();
return $arr;
$conn->close();
}
使用此函数时,显示如下的错误信息:
Fatal error: Call to a member function fetch_array() on a non-object
2.原因分析:
使用var_dump($result)查看dql()的返回结果,发现返回的是bool(false),可见函数dql()逻辑存在错误。
只有查询成功,返回的是object类型的$result,才可以使用语句$result->fetch_array();
没有查询成功,返回的是bool类型,即a non-object,不能使用$result->fetch_array()。
于是使用if()语句判断一下$result的结果,修改后的程序如下:
//查询操作
function dql($sql){
$conn=@new mysqli('localhost','root','root','forum');
if ($conn->connect_error) {
die('数据库连接错误!');
}
$result=$conn->query($sql);
//查询成功
if ($result) {
$arr=$result->fetch_array();
return $arr;
}else{
echo '查询出错!';
}
$conn->close();
}

本文介绍了一个关于使用PHP的mysqli扩展进行数据库查询时遇到的问题及其解决方案。问题表现为尝试从查询结果中获取数组时发生的致命错误。通过检查查询结果是否为有效对象而非布尔值false来避免这一错误。
31万+

被折叠的 条评论
为什么被折叠?



