为啥将我的 SQL 查询合并为一个不起作用? [复制]
Posted
技术标签:
【中文标题】为啥将我的 SQL 查询合并为一个不起作用? [复制]【英文标题】:Why does combining my SQL queries into one not work? [duplicate]为什么将我的 SQL 查询合并为一个不起作用? [复制] 【发布时间】:2012-03-03 18:33:10 【问题描述】: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 查询合并为一个不起作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章