如何仅在查询失败时处理mysqli错误


How to handle mysqli errors only if query failed?

我已经编写了这个简单的函数,它返回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自动完成。

说到函数本身——它永远不应该被使用。因为它不支持事先准备好的陈述。唯一可用的变体应该允许第二个参数作为数组与数据绑定,以使函数以唯一正确的方式运行——查询是用占位符编写的,而所有变量都是单独发送的。