检查mysqli查询是否成功的正确方法

时间:2013-12-17 12:08:28

标签: php database mysqli prepared-statement

我已经阅读了几篇关于这个问题的文章,但是他们都没有帮助我,我有点困惑该做什么。

基本上,我想检查sql查询是否执行没有任何错误。为此,我是否必须使用下面显示的if语句?

if($stmt = $mysqli->prepare("INSERT INTO table VALUES (?, ?, ?);"))
{
    $stmt->bind_param("sss", $a, $b, $c);

    if(!$stmt->execute())
    {
        // Do I have to catch the problem here?
    }

    if($stmt->affected_rows === -1){
       // Do I have to catch the problem here?
    }

    $stmt->close();
}
else
{
    // Do I need to catch the problem here?
}

2 个答案:

答案 0 :(得分:1)

您应该检查prepare()bind_param()execute()的返回值。如果失败,他们都会返回false

如果execute()未返回false,那么INSERT应该已经成功完成,因此如果您想知道如何检查affected_rows才有意义许多行受到影响。

答案 1 :(得分:0)

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

将此行放在mysqli connect上方。这就是你所需要的。

要通知用户有问题,请检查AJAX请求的响应状态。如果它是500 - 那么保存存在问题。