0

次のように複数のUPDATESQL クエリを実行しています。

$queriesRun = mysqli_multi_query($connection, $queries);

では、結果をループして、どのクエリが成功し、どのクエリが失敗したかを知るにはどうすればよいでしょうか? PHP マニュアルは、後で使用できる関数が多すぎて頭痛の種です。

ありがとう!

4

2 に答える 2

0

以下は、レコード セットを返さないクエリを取得するために構築された手続き型の mysqli_multi_query ソリューションです。各クエリ ステートメント、その影響を受ける行、および $queries からの影響を受ける行の合計数が表示されます。エラーが発生した場合、mysqli_multi_query() は停止し、原因となるエラーが表示されます。

$single_queries=explode(';',$queries);
if(mysqli_multi_query($connection,$queries)){
    do{
        echo "<br>",array_shift($single_queries),"<br>";
        $cumulative_rows+=$aff_rows=mysqli_affected_rows($connection);
        echo "Affected Rows = $aff_rows, ";
        echo "Cumulative Affected Rows = $cumulative_rows<br>";
    } while(mysqli_more_results($connection) && mysqli_next_result($connection));
}
if($error_mess=mysqli_error($connection)){
    echo "<br>",array_shift($single_queries),"<br>Error = $error_mess";
}

出力 (Column1='' の Test テーブルに 5 つの行が存在すると仮定):

UPDATE Test SET Column1='changed' WHERE Column1=''
Affected Rows = 5, Cumulative Affected Rows = 5

UPDATE Test SET Column1='changed again' WHERE Column1='changed'
Affected Rows = 5, Cumulative Affected Rows = 10

クエリをより明確に識別したい場合は、$queries を、キーが各クエリを表す関連する配列に変更してから、私の同様の投稿をチェックして ください。

于 2014-03-18T09:24:19.217 に答える