如何使用mysqli :: multi_query获取错误消息?

时间:2012-09-05 18:38:47

标签: php mysqli

以下是我正在尝试的内容:

if($mysqli->multi_query(file_get_contents('file_that_contains_a_bunch_of.sql'))) {
    do {
        $result = $mysqli->use_result();
        if($mysqli->errno === 0) {
            echo $mysqli->affected_rows.' row(s) affected'.PHP_EOL;
        } else {
            die($mysqli->error);
        }
    } while($mysqli->next_result());
}

但是它提前中止循环并且不会打印错误消息。我如何找出错误是什么?

3 个答案:

答案 0 :(得分:2)

彼得删除了他的答案,但它暗示了问题所在。我必须在循环之外进行错误检查。

无论如何,我需要写

if($mysqli->errno) die($mysqli->error)

如果 next 查询出现错误,next_result函数将返回false,因此它甚至不会进入循环体。

答案 1 :(得分:1)

如果你以某种方式配置mysqli_report,它可能会中止循环,查找这样的字符串

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

在这种情况下,每次你都尝试这样做

$mysqli->use_result();

如果没有结果,您将产生错误,例如,如果有"设置","插入","更新"或"删除"查询类型。

您是否找到了获取错误消息的方法?

答案 2 :(得分:-1)

使用此代码,它运作良好

async/await