首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在两个表中使用一个查询删除记录的问题

在两个表中使用一个查询删除记录的问题
EN

Stack Overflow用户
提问于 2011-04-24 21:52:28
回答 3查看 169关注 0票数 1

当我在phpMyAdmin中直接尝试这一点时:

代码语言:javascript
复制
DELETE FROM navigation WHERE id='14';DELETE FROM subnavigation WHERE navi_id='14';

它可以工作,但是当我做的PHP查询不工作时:

代码语言:javascript
复制
$db->query('DELETE FROM navigation WHERE id='.$id.';DELETE FROM subnavigation WHERE navi_id='.$id.';');

它给了我这个错误,没有删除任何内容:

您的SQL语法出现了错误;请检查与MySQL服务器版本对应的手册,以便在第1行使用接近“从子导航中删除navi_id=14”的正确语法。

我想我错过了一些很小的东西!谢谢你的时间和帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-24 21:58:07

把它变成一个查询。

代码语言:javascript
复制
//don't forget to protect yourself from SQL-injection attacks!
$id = mysql_real_escape_string($id);

$delete_query = " DELETE n, sn from navigation n
                  LEFT JOIN subnavigation sn ON (n.id = sn.id)
                  WHERE n.id = '$id' ");
$db->query($delete_query);
票数 1
EN

Stack Overflow用户

发布于 2011-04-24 21:56:12

mysql_query()向与指定link_identifier相关联的服务器上的当前活动数据库发送唯一查询(多个查询不支持)。

http://php.net/manual/en/function.mysql-query.php

PhpMyAdmin基于分隔符爆炸字符串,并以多个查询的形式执行。

如果你想离开这本书(不推荐)

您只需将标志65536作为mysql_connect的5参数(client_flags)传递。此值在/usr/include/mysql/mysql_com.h中定义。

代码语言:javascript
复制
#define CLIENT_MULTI_STATEMENTS (1UL << 16) /* Enable/disable multi-stmt support */

更新

在第一个表上创建一个触发器,所以删除它也会从第二个表中删除。

票数 2
EN

Stack Overflow用户

发布于 2011-04-24 22:00:00

这样的多个语句不是一个查询,它们形成一个脚本。查看提交SQL脚本。http://www.shinephp.com/php-code-to-execute-mysql-script/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5773469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档