2013-07-30 44 views
1

我尝试与Zend DB执行此查询:的Zend DB查询

$this->db->query(" 
      CREATE EVENT turn_tonormal 
      ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE COMMENT 'Return the calendar state to NORMAL' 
      DO 
      SELECT type FROM calendar WHERE id = 64; 
      UPDATE calendar SET type = IF(type = 'OK', 'OK', 'NRML') WHERE id=64; 
      DROP event turn_tonormal; 
     "); 

在phpMyAdmin QSL都去罚款,并与如果条件UPDATE 前,但是从PHP时我收到此我创建这个事件错误:

Mysqli prepare error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE mind_calendar SET timeband_type = IF(timeband_type = 'PRENOTED', 'PRENOTE' at line 5 

我想这是因为Zend DB查询只执行一个查询,我有不止一个。我如何解决。

在此先感谢和索里的英语不好:)

+0

Zend DB不允许您一次执行多个查询。 – RMK

+3

可能的重复[我如何运行多个SQL查询每次调用“查询”使用Zend \ _Db \ _Adapter?](http://stackoverflow.com/questions/7395056/how-do-i-run-multiple-sql -queries-per-call-to-query-using-zend-db-adapter) – RMK

+0

非常感谢你,multi_query可以工作,但它的工作方式与对query()进行多重调用的方式相同。我认为shell_exec()更好,但在这种情况下,我更喜欢更改我的逻辑并留下使用MySQL事件的想法。 –

回答

0

我认为最好的方法是使用PHP脚本用cron来完成这项工作,所以你可以删除该事件的要求。由于shell_exec()在所有环境中都不可行,所以它是可移植的,如果你问我的话,它不会成为“好”的解决方案。

+0

谢谢你的回答,是的,我离开了这条路。现在我在第一个动作上添加一个时间戳,并且在需要id的项目回复时,如果我设置的时间已过并执行操作,则控制它。 –