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