我编写了这个简单的函数,它返回false或结果数组,但也应该返回错误,对于某些reasson我在调用这个函数时会遇到这个错误。
- Call to a member function fetch_array() on a non-object
我只想实现,如果查询失败,则返回错误和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;
}
}
答案 0 :(得分:1)
你在错误处理和编写简单函数时都有错误的想法。
mysqli错误中有没什么特别的。这就像其他任何错误一样 - 文件系统错误,语法错误,运行时错误。因此,必须以相同的方式处理所有错误 - 必须记录错误信息,停止脚本,必须向用户显示错误屏幕。
当然,任何函数都不应该只返回错误消息作为返回值。
因此,在连接
之前将mysqli设置为Exception模式mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
所有错误处理都将由PHP自动完成。
说到功能本身 - 永远不应该使用它。因为它不支持预准备语句。唯一可用的变体应该允许第二个参数作为数组绑定数据,使函数运行唯一正确的方式 - 查询用占位符写,而所有变量分别发送。