带有MySQL事件的Zend DB查询

带有MySQL事件的Zend DB查询,mysql,zend-framework,mysqli,zend-db,zend-db-table,Mysql,Zend Framework,Mysqli,Zend Db,Zend Db Table,我尝试使用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 WHE

我尝试使用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中,一切正常,我在更新之前使用if条件创建此事件 但从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 query只执行一个查询,而我有多个查询。我怎样才能解决这个问题


我想最好的方法是使用带有cron的PHP脚本来完成这项工作,这样您就可以删除事件要求。Keeps是可移植的,因为shell_exec()不可能在所有环境中都实现,而且如果您问我的话,它也不符合“好”解决方案的条件

Zend DB不允许您同时执行多个查询。非常感谢,multi_query可能重复,但其工作方式与多次调用query()相同。我认为shell_exec()更好,但在这种情况下,我更喜欢改变我的逻辑,留下使用MySQL事件的想法。谢谢你的回答,是的,我这样离开了。现在,我在第一个操作上添加了一个时间戳,当需要id的项被检索时,我控制我设置的时间是否已过,并执行操作。