2015-02-23 21 views
1

我试图在zend中执行一个包含set time_zone='+8:00';的sql查询,但由于这个字符串而无法执行它。如何使zend在sql中设置time_zone

我该怎么做才能正确运行查询?

代码:

$sql = "set time_zone='+8:00'; 
      SELECT 
      n.id, 
      ..."; 
    $query=$this->_db->query($sql); 
    $fetch=$query->fetchAll(); 

    return $fetch; 
+0

什么是错误信息? – 2015-02-23 11:47:13

+0

它不会产生任何错误消息。只是空白。我试过尝试和捕捉声明,也没有工作。但是,如果我直接在workbench或phpmyadmin中使用该查询,则查询可行。 – AimanB 2015-02-23 12:06:41

+0

空白页通常意味着有PHP错误。你的Web服务器错误日志里有什么? – 2015-02-23 13:13:36

回答

1

你应该分开两个查询。该Zend_Db的对象没有任何检索的结果,如果你第一次用mysql命令SET,或一次

首先使用执行两个查询:

$this->_db->query('set time_zone='+8:00';'); 

然后,在第二行:

$Query = $this->_db->query('SELECT n.id FROM ...') 

然后你可以获取结果或通过它们循环

while($Result = $Query->fetch()) { 
    print_r($Result); 
} 

或者使用

$Query->fetchAll() 
+0

这会影响其他查询吗?或只是当这个查询被执行?无论如何,谢谢。这工作。 – AimanB 2015-03-02 07:37:18

+0

这将影响您在此连接中执行的所有查询。您需要在创建与MySQL服务的新连接后再次设置时区。 – Benz 2015-03-02 08:32:45

+0

你的意思是它影响基于每个fetchAll()查询或此查询以外的其他连接?例如,我在连接到数据库的控制器中有另一个动作。它也会影响这一行动吗? – AimanB 2015-03-02 08:39:52