私はこのコードを手に入れました:
// Some starting variables
$test = new mysqli("localhost","root","","testdatabase");
$Query = array();
$Query[] = "SELECT 'wos' FROM items WHERE itemID = 3";
$Query[] = "SELECT 'wos' FROM items WHERE itemID";
$Query[] = "SELECT 'wos' FROM items WHERE itemID = 5";
$Query = implode(";",$Query);
$Errors = array();
// Execute multi query
if ($test->multi_query($Query)) {
do {
// fetch results
$Result = $test->store_result();
print_r($Result);
if($test->errno === 0) {
echo $Result->num_rows . "<br>";
}
else {
$Errors[] = $test->error;
}
$Result->close();
if (!$test->more_results()) {
break;
}
if (!$test->next_result()) {
$Errors[] = $test->error;
break;
}
} while (true);
}
ご覧のとおり、X 個の後続のクエリがあり、それらすべてを実行したいと考えています。したがって、クエリ 2 が失敗した場合は、マルチクエリを続行して、次のクエリを実行したいと考えています。これどうやってするの?
また、エラーが発生した場合は、このエラーを に保存したいと考えています$Errors
。ただし、現在、エラーメッセージのみを保存でき、対応するクエリは保存できないため、意図したとおりに機能していません。失敗したクエリがなければ、エラー メッセージだけではあまり役に立ちません。だから私は次のようなものが欲しい: "Query 3 failed ('SELECT ...'): 'ERROR MESSAGE'"
.
これはどのように可能ですか?を使用してループ内の現在のエラーを取得できますが、の$test->error
ようなものはありません$test->currentsubsequentquery
。どうやってやるの?