3

这是我正在尝试的:

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());
}

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

4

3 回答 3

5

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

在一切之下,我需要写

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

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

于 2012-09-05T18:45:57.757 回答
2

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

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

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

$mysqli->use_result();

如果没有结果,您将生成错误,例如,如果有“设置”、“插入”、“更新”或“删除”类型的查询。

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

于 2014-12-10T03:32:41.520 回答
-1

使用此代码效果很好

while ($conn->more_results()){
     $conn->next_result();
     echo $conn->error;
}
于 2017-11-08T07:58:01.550 回答