2015-02-23 18 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