如果查询失败,如何处理mysqli错误?

时间:2013-12-09 04:24:09

标签: php mysqli

我编写了这个简单的函数,它返回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;
    }
}

1 个答案:

答案 0 :(得分:1)

你在错误处理和编写简单函数时都有错误的想法。

mysqli错误中有没什么特别的。这就像其他任何错误一样 - 文件系统错误,语法错误,运行时错误。因此,必须以相同的方式处理所有错误 - 必须记录错误信息,停止脚本,必须向用户显示错误屏幕。

当然,任何函数都不应该只返回错误消息作为返回值。

因此,在连接

之前将mysqli设置为Exception模式
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

所有错误处理都将由PHP自动完成。

说到功能本身 - 永远不应该使用它。因为它不支持预准备语句。唯一可用的变体应该允许第二个参数作为数组绑定数据,使函数运行唯一正确的方式 - 查询用占位符写,而所有变量分别发送。