我已經問了一些關於在PHP的多重查詢中捕獲錯誤的問題,但是沒人回答。現在我已經搜索了一些,並更多地瞭解了這個問題。如果發生錯誤,讓PHP多重查詢繼續下去
我得到這個代碼:
// 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
。我怎樣才能做到這一點?
非常感謝。
我沒有看到任何地方$測試的定義或任何它調用的方法如果我們不知道你的代碼在做什麼 – Kyle
$ test = new mysqli(「localhost」,「root」,「」,「testdatabase」); – Shiuyin
如果SQL錯誤是可能的,預期的結果,那麼你做錯了事。 '做類似於SQL客戶端(或終端)的東西你爲什麼一次真的需要執行這麼多的查詢? –