我已经问了一些关于在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客户端(或终端)的东西你为什么一次真的需要执行这么多的查询? –