我正在尝试对数据库中的多个表执行删除语句,但由于某种原因此代码不起作用,我不确定为什么。 $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();
}
为什么交易有用?它允许您将所有查询提交到系统,然后在将其提交到系统之前检查是否有任何错误和逻辑计算。如果发现任何错误,可以回滚(),这将阻止上述任何查询实际修改数据库。
关于php - 使用 PHP 在一条 SQL 语句中进行多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23173553/