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 に答える