[英]Multiple queries in one SQL statement using PHP
我正在尝试对数据库中的多个表执行delete语句,但是由于某种原因,此代码无法正常工作,我不确定为什么。 $ productId使用$ _GET变量传递。 该语句在phpMyAdmin中有效,但是当我进入网站时,它将停止工作。 语法错误吗?
$sql = '
DELETE FROM products
WHERE prod_id = ' . $productID . '
LIMIT 1;
DELETE FROM product_category
WHERE prod_id = ' . $productID . '
LIMIT 3;
DELETE FROM product_images
WHERE prod_id = ' . $productID .'
LIMIT 1
';
$db->query($sql);
正如Barmar在评论中所说,PDO不支持这一点。 您可以使用mysqli_multi_query,但我不建议这样做。
我建议使用交易。 我不知道您使用的是什么API,但是我喜欢PDO,因此我将展示一个基本示例。
$db->beginTransaction();
$q1 = $db->query(...);
$q2 = $db->query(...);
$q3 = $db->query(...);
if ($q1 and $q2 and $q3) {
$db->commit();
}
else {
$db->rollBack();
}
为什么交易有用? 它允许您将所有查询提交给系统,然后在将其提交给系统之前检查所有错误和逻辑计算。 如果发现任何错误,则可以使用rollback()来防止上述任何查询实际修改数据库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.