2个mysql查询中的1个变量,有帮助吗?

时间:2011-03-08 15:05:55

标签: php mysql

$qry1 = "DELETE FROM
    si_topics
WHERE
    topic_id = '". $_GET['topic'] ."'
DELETE FROM 
    si_posts
WHERE
    topic_id = '". $_GET['topic'] ."'";

$mysqlqry1 = mysql_query($qry1);
if($mysqlqry1){
    echo 'Topic deleted from database!';
} else {
    echo 'Mysql query failed!';
}

这会给出消息Mysql query failed!,为什么?

问候

7 个答案:

答案 0 :(得分:2)

您的两个删除语句之间缺少分号。

此外,mysql_query中不支持多个查询。

来自the documentation

  

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

答案 1 :(得分:1)

您无法一次在mysql_query()功能中运行多个查询。

尝试使用mysqli::multi_query来运行多个查询。查询可以由;

分隔

答案 2 :(得分:1)

从手册中引用(我的重点)

  

mysql_query()发送唯一查询(不支持多个查询

如果要在单个查询中执行多个SQL语句,则需要使用mysqlimulti-query,并且每个语句都需要用分号(;)

答案 3 :(得分:1)

由于:

  • 您发送的查询语法无效,
  • 即使您在查询之间添加了分号(MySQL服务器还应该知道第二个查询的起始位置是什么?!?),PHP的旧库doesn't support就在这里。

改为使用mysqli.multi_query()

您还应该使用预准备语句或至少清理您的输入,因为您的代码有一个巨大的SQL注入漏洞(人们如何仍然像这样编写PHP?!?它们是什么?在这些“学校”教学?!唉!)

答案 4 :(得分:0)

PHP不允许一次运行2个查询。

您需要将查询拆分为2个变量并逐个运行。

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

文档说明:

  

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

标准的MySQL分隔符分号(;)在这里不起作用。

答案 5 :(得分:0)

如果您希望在多个表中指定多个删除条件,则可以对DELETE语句使用JOIN语法,但这可能效率低下 - 但这样,查询将适合mysql_query();

有人已经提到过mysqli和multi_query函数,竖起大拇指:)

另一方面,您的代码极易受到SQL注入攻击,在查询中直接使用它之前,请始终清理$ _POST和$ _GET输入!

答案 6 :(得分:-2)

在'echo'之后添加mysql_error($ link)Mysql查询失败!';'线

这将解释问题。