为啥将我的 SQL 查询合并为一个不起作用? [复制]

Posted

技术标签:

【中文标题】为啥将我的 SQL 查询合并为一个不起作用? [复制]【英文标题】:Why does combining my SQL queries into one not work? [duplicate]为什么将我的 SQL 查询合并为一个不起作用? [复制] 【发布时间】:2012-03-03 18:33:10 【问题描述】:

这两个 php mysql 查询有效。

mysql_query("DELETE FROM videos WHERE id='10';");
mysql_query("DELETE FROM comments WHERE videoId='10';");

由于与后面的 DELETE 操作相关的 MySQL 语法错误,此单个查询失败。

mysql_query("DELETE FROM videos WHERE id='10';DELETE FROM comments WHERE videoId='10';");

我一直盯着看,看不到语法错误。这是什么?

【问题讨论】:

您确定可以在一个查询中包含多个命令吗? 与其他问题类似,但这个问题要简洁得多 【参考方案1】:

mysql_query 不支持请参阅How can I put two queries in one mysql_query? 使用http://docs.php.net/mysqli.multi-query

【讨论】:

【参考方案2】:

您不能使用mysql_query 执行多个查询。如果您真的想要(安全风险!),请使用mysql_multi_query。 (并且您应该使用较新的 mysqli_* 函数)。将这两个调用嵌入到事务中是个好主意。

但这看起来很像你真的想定义foreign key constraints。如果您已经在使用 InnoDB,我强烈推荐它们。

【讨论】:

谢谢!为什么一次运行多个查询存在安全风险?事实上,我正在尝试强制执行外键约束。 安全风险,如果您在查询中使用用户提供的数据并且未能转义单个值(sql 注入)。准备好的语句不会发生这种情况,但我认为准备好的语句也不允许使用单个命令进行多个查询。【参考方案3】:

此函数不支持多查询。

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

【讨论】:

以上是关于为啥将我的 SQL 查询合并为一个不起作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 UPDATE sql 查询不起作用?不会更新表

为啥这个合并语句不起作用?

为啥 `fetch` 将我的 JSON 字符串转换为查询字符串?副作用? [复制]

为啥这个 PL/SQL 过程不起作用?

为啥我的 Access Max() 子查询不起作用?

为啥我的 JavaScript RGB Hex 转换器不起作用?