繁体   English   中英

使用PHP在一个SQL语句中进行多个查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM