php - PHP不会为多个查询抛出错误
问题描述
我有一些 PHP 代码来执行多个查询,其中一个查询有错误。但是 PHP 没有检测到它。这是代码
$updateCategoriesQ = "DELETE FROM category_products WHERE product = $id; INSERT INTO category_products (category, products) VALUES ";
foreach ($product['categories'] as $key) {
$updateCategoriesQ .= "(".mysqli_real_escape_string($connect, $key)."', $id), "; //error is here in the quote
}
$updateCategoriesQ = rtrim($updateCategoriesQ, ', ');
o($updateCategoriesQ);
$updateCategories = mysqli_multi_query($connect, $updateCategoriesQ);
if($updateCategories){
o('query ok'); //receives this output (wrapper function for echo)
}
形成的查询是
DELETE FROM category_products WHERE product = 1; INSERT INTO category_products (category, products) VALUES (1', 1), (2', 1)
第二个查询有错误,但 PHP 说没问题。如果我在第一个查询(删除)中创建错误,那么它会抛出错误,但如果错误在第二个查询中则不会。这里有不同的捕获错误的方法吗?
解决方案
好的,在@Barmar 和这个答案的帮助下,这是在后续查询中捕获错误的好方法。
$updateCategories = mysqli_multi_query($connect, $updateCategoriesQ);
if($updateCategories){
do {
mysqli_next_result($connect);
$result = mysqli_store_result($connect);
if (!$result) {
o(mysqli_error($connect));
}
} while (mysqli_more_results($connect));
} else {
o(mysqli_error($connect));
}
推荐阅读
- javascript - google-map-react 使用多个标记使地图居中
- nmap - nmap 找不到 nse_main.lua
- webpack - 使用 Babel 为 IE11 转译 ES6
- python - 使用 Python 和 Sympy 以可预测的顺序生成唯一的排列
- python - 数据框与对象列表
- javascript - 然后,典型的 Asp.Net FormsAuthentication 无法识别通过 jQuery ajax 创建的 Cookie
- angular - 什么是“pointermove”事件以及为什么需要这么多时间?
- ios - Swift,MyClass,可选(MyClass?),不可转换为 MyClass
- ios - 在 Swift 中解码和编码“Any”类型的属性
- javascript - 尝试为 select2 组合框创建自定义数据适配器时,是什么导致“Uncaught TypeError baseName split is not a function”?