我已经编写了这个简单的函数,它返回false或结果数组,但也应该返回错误,因为我在调用这个函数时会得到这个错误。
- Call to a member function fetch_array() on a non-object
我只想知道,若查询失败,则返回error和false,若查询正常,则返回结果,VOILA。
功能:
function full_query($query)
{
global $mysqli;
$result = $mysqli->query($query);
if ($mysqli->error)
{
print $mysqli->errno;
return false;
}
else
{
$results_array = array();
while($row = $result->fetch_array(MYSQLI_ASSOC))
{
$results_array[] = $row;
}
$result->close();
return $results_array;
}
}
您在错误处理和编写简单函数方面都有错误的想法。
mysqli错误中没有任何特别的。这只是错误,就像其他任何错误一样——文件系统错误、语法错误、运行时错误。因此,所有错误都必须以相同的方式处理——必须记录错误信息,暂停脚本,向用户显示错误屏幕。
当然,任何函数都不应该只返回错误消息作为返回值。
因此,在连接之前,请将您的mysqli设置为异常模式
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
所有的错误处理都将由PHP自动完成。
说到函数本身——它永远不应该被使用。因为它不支持事先准备好的陈述。唯一可用的变体应该允许第二个参数作为数组与数据绑定,以使函数以唯一正确的方式运行——查询是用占位符编写的,而所有变量都是单独发送的。