php - 在 PHP 中一次从 3 个表中删除行

标签 php mysql sql mysqli prepared-statement

我的表结构是这样的

enter image description here

这里是Sql语句

            $stmt = $this->db->prepare("DELETE FROM chapters WHERE (subject_id=? AND id = ?)") or die($this->db->error());
            $stmt->bind_param("ii", $subject_id, $node);
            $stmt->execute();
            $stmt = $this->db->prepare("DELETE FROM sections WHERE (subject_id=? AND chapter_id=? )") or die($this->db->error());
            $stmt->bind_param("ii", $subject_id, $node);
            $stmt->execute();
            $stmt = $this->db->prepare("DELETE FROM paragraphs WHERE (subject_id=? AND chapter_id=?)") or die($this->db->error());
            $stmt->bind_param("ii", $subject_id, $node);
            $stmt->execute();

所以我想做的是,将这 3 个语句合并为一个并优化服务器负载。

详细

例如,如果我想从 chapters 表中删除 id=1 的行,那么还要从另外 2 个表中删除:sectionsparagraphs 通过 2 个参数:$node$subject_id(当然,如果有带有这些参数的行。我的意思是必须有连接以防止任何错误)。

问题是..

这可能吗?我想不通,sql 语句必须是什么样子。有什么建议吗?

最佳答案

如果您使用ON DELETE CASCADE 设置了外键约束,那么您只需要删除父行。 MySQL 将自动删除子行。

关于php - 在 PHP 中一次从 3 个表中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10438339/

相关文章:

返回 boolean 值的 PHP 函数

mysql - 可以使用单个查询 : get a fixed number of items of different types, ordered 来做到这一点

mysql - 需要了解 iPhone 上基于 Web 的客户端服务器应用程序

mysql - 从 Magento 数据库中的序列化字段获取数据

php - 从 MySQL 中的同一(随机)记录中选择 2 列的最快方法是什么?

sql - sql中如何对表进行转置

php - (Laravel) 如何从用户模型中获取验证错误?

php - MySQL查询执行率

java - 如何用另一种语言(不是 Python)编写 Celery worker/tasks?

mysql - 使用.NET执行MySQL的SQL文件