2012-03-03 32 views
1

这两个PHP MySQL查询的工作。为什么将我的SQL查询合并为一个不起作用?

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';"); 

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

+0

你确定你可以在一个查询中有多个命令吗? – Randy 2012-03-03 18:35:44

+0

类似于其他问题,但这一个更简洁 – Randy 2012-03-03 18:38:37

回答

1

您无法使用mysql_query执行多个查询。如果你真的想要(安全风险!),请使用mysql_multi_query。 (你应该使用更新的mysqli_*函数)。在交易中嵌入这两个调用是个好主意。

但是,这看起来很像你真的想要定义foreign key constraints。如果您已经使用InnoDB,我强烈建议他们。

+0

谢谢!为什么一次运行多个查询会带来安全风险?事实上,我试图执行外键约束。 – dangerChihuahua007 2012-03-03 18:56:14

+1

安全风险,如果您在查询中使用用户提供的数据并且无法转义单个值(sql注入)。这在准备好的语句中不会发生,但我认为预准备语句不允许使用单个命令进行多个查询。 – knittl 2012-03-03 18:57:51