php - 有没有其他方法可以从多个表中删除行而不在表之间创建外键?
问题描述
此代码不起作用。在不创建表之间的外键的情况下,如何从多个匹配条件的表中删除数据?如何编写 2 查询并使用 PHP-PDO 发送
$query = "DELETE FROM category, bookmark WHERE (bookmark.category = ? AND category.name = ?)";
$stmt = $db->prepare($query);
$stmt->execute([$categoryName, $categoryName]);
我在用 ”?” 防止sql注入。这是我得到的错误。
JavaSQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“WHERE (bookmark.category = 'Java' AND category.name = 'Java')' 附近使用正确的语法
解决方案
在多表 DELETE 中,您必须指定必须删除哪些记录的表:
DELETE category, bookmark
FROM category, bookmark
WHERE (bookmark.category = ? AND category.name = ?)
请参阅MySQL 8.0 参考手册 / ... / DELETE 语句,“多表语法”部分。必须删除记录的表的名称不包含在方括号中作为可选(两种语法变体中的第二行查询文本)。
推荐阅读
- neo4j - 匹配前取消大写字符串
- python - 在python tkinter中更改不同字母的颜色
- nginx - nginx process = 404 如何在try_files中回退
- ios - 如何验证自定义 Eureka 行中的文本字段等对象?
- drupal - Drupal 7:查询没有结果的自定义内容类型
- javascript - vscode 扩展 - 如何记录击键
- javascript - 如何 - Photoshop 脚本 - 合并两个图层
- r - 获得与 ifelse 函数的错误关联
- google-drive-api - 将图像发布到 Google Drive API V3 时出现问题
- javascript - 如何从 Angular 7 中的另一个组件更新视图?