查询在phpmyadmin中运行正常,但不是从脚本运行

时间:2011-11-25 23:23:39

标签: php mysql sql codeigniter phpmyadmin

$query_string = "UPDATE _notifications SET _notifications.notification_flag = 0 WHERE _notifications.notification_id = 'JTQBPULM3M' ;
UPDATE _notifications SET _notifications.notification_flag = 0 WHERE _notifications.notification_id = 'KC7KZT2JAT' ;
UPDATE _notifications SET _notifications.notification_flag = 0 WHERE _notifications.notification_id = 'M6L5T5Z2K0' ;";
$this->db->query($query_string);

查询从phpmyadmin运行正常但如果从php运行则抛出此错误:

  

错误号码:1064

     

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   'UPDATE _notifications SET _notifications.notification_flag = 0附近   在第2行的

UPDATE _notifications 
SET _notifications.notification_flag = 0 
WHERE _notifications.notification_id = 'JTQBPULM3M' ; 

UPDATE _notifications 
SET _notifications.notification_flag = 0 
WHERE _notifications.notification_id = 'KC7KZT2JAT' ; 

UPDATE _notifications 
SET _notifications.notification_flag = 0 
WHERE _notifications.notification_id = 'M6L5T5Z2K0' ;

更新:谢谢大家!

3 个答案:

答案 0 :(得分:6)

假设我假设问题是你在同一个查询中有多个语句,你可以试试这个:

$query_string = "UPDATE _notifications SET _notifications.notification_flag = 0 
WHERE _notifications.notification_id IN ('JTQBPULM3M', 'KC7KZT2JAT', 'M6L5T5Z2K0')";
$this->db->query($query_string);

这将使它成为一个单一的陈述。

我假设它在phpMyAdmin中有效,因为我怀疑phpMyAdmin将多个语句分解为单独的查询,而不是单个查询。 (纯粹的猜测,请记住。)

答案 1 :(得分:4)

您没有说明您正在使用的数据库包装器,但许多库无法执行多个查询。如果由库提供,则必须使用“multi_query”方法,或将它们分成不同的方法。

答案 2 :(得分:0)

根据手册,您可以通过在连接时设置参数然后进行大量混乱来执行此类多个语句。更容易采用'脚本和拆分然后迭代,如果有其他方式altogther在其他方面是方便的。

但如果你真的需要。

MySql 5.1 Manual Multiple Queries