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

标签 php mysql sql phpmyadmin

我正在尝试对数据库中的多个表执行删除语句,但由于某种原因此代码不起作用,我不确定为什么。 $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/

相关文章:

php - 在 Woocommerce 中隐藏一些结帐字段问题

php - 三个带条件的表上的 INNER JOIN

具有两个交叉表和多个列的 SQL 数据透视表

php - mysql 使用用户名计算用户推荐 |出现错误

php - 从表 SQL 统计数据

sql - 如何将6列按数字顺序排序

sql - BigQuery 插入嵌套记录

php - 将产品详细信息插入 'product' 表,并将产品图像插入 'image' 表

php - 如何从 PHP 中的数组中选择随机值?

PHP修改从数据库检索的值(编码和特殊字符问题)