9

「mysqli_multi_query」を使用して一度に実行したいクエリ文字列がいくつかあります。これは機能します。

「mysqli_query」を使用して結合テーブルの各項目をチェックするクエリを再度挿入すると、PHP から結果エラーも返されません。phpmyadmin でクエリ文字列を手動で実行すると、すべて正常に動作します。

これが私のコードです:

<?php

$connect   = mysqli_connect('localhost','root','','database');
$strquery  = "";
$strquery .= "1st Query";
$strquyer .= "2nd Query";
if($multi = mysqli_multi_query($connect,$strquery)){   // function mysqli_multi_query is working
     // From here it doesn't give any response
     $qryarray = mysqli_query($connect, 
                              "SELECT purchase_detail_$_SESSION[period].item_code,
                                      purchase_detail_$_SESSION[period].location_code
                               FROM   purchase_detail_$_SESSION[period] 
                               WHERE  purchase_detail_$_SESSION[period].purchase_num = '$_POST[purchase_num]' 
                               UNION
                               SELECT purchase_detail_temp.item_code,
                                      purchase_detail_temp.location_code
                               FROM   purchase_detail_temp 
                               WHERE  purchase_detail_temp.purchase_num = '$_POST[purchase_num]' AND purchase_detail_temp.username = '$_SESSION[username]'");
     while($array = mysqli_fetch_array($qryarray)){
          "Some code to process several item code in table purchase_detail_$_SESSION[period]"
     }
}

私のコードに何か問題がありますか?

4

2 に答える 2

17

PHPマニュアルで答えを見つけました:

注意: と を混在させる$mysqli->multi_query$mysqli->query、後者は実行されません!

悪いコード:

$mysqli->multi_query(" Many SQL queries ; "); // OK
$mysqli->query(" SQL statement #1 ; ") // not executed!
$mysqli->query(" SQL statement #2 ; ") // not executed!
$mysqli->query(" SQL statement #3 ; ") // not executed!
$mysqli->query(" SQL statement #4 ; ") // not executed!

これを正しく行う唯一の方法は次のとおりです。

作業コード:

$mysqli->multi_query(" Many SQL queries ; "); // OK
while ($mysqli->next_result()) {;} // flush multi_queries
$mysqli->query(" SQL statement #1 ; ") // now executed!
$mysqli->query(" SQL statement #2 ; ") // now executed!
$mysqli->query(" SQL statement #3 ; ") // now executed!
$mysqli->query(" SQL statement #4 ; ") // now executed!

の後にこのコードを挿入するだけですmysqli_multi_query()

while(mysqli_next_result($connect)){;}
于 2015-01-13T16:15:08.110 に答える