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();
}