2010-06-10 69 views
3

我正在處理兩個表(urlscompanies)的簡單JOIN。我使用這個查詢電話:爲什麼Zend Framework(Zend_Db_table)拒絕這個SQL查詢?

print $this->_db->select()->from(array('u' => 'urls'), 
           array('id', 'url', 'company_id')) 
          ->join(array('c' => 'companies'), 
           'u.company_id = c.id'); 

該出把這個查詢:

SELECT `u`.`id`, `u`.`url`, `u`.`company_id`, `c`.* FROM `urls` AS `u` INNER JOIN `companies` AS `c` ON u.company_id = c.id 

現在,我寧願在c.*不實際出現,但無論哪種方式並不重要。 ZF死於此錯誤:

SQLSTATE[42000]: Syntax error or access violation: 1064 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 '' at line 1" 

但我可以在MySQL CLI中完美地運行該查詢。任何想法如何修復這個查詢?

+0

檢查是否已在公司保留關鍵字(場)表。 http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html – 2010-06-10 21:35:05

回答

5

我剛剛在ZF 1.10和MySQL 5.1的測試腳本中試過這段代碼,它工作正常。

你用什麼用戶/密碼連接到你的數據庫?它說「或訪問衝突」,所以我會測試你的數據庫用戶名有正確的權限。嘗試使用確切相同的用戶/密碼和連接方法(因爲根據客戶端主機,甚至對於相同的用戶/密碼,權限可能會有所不同)嘗試連接MySQL CLI。

MySQL Zend Framework - SQLSTATE[42000]: Syntax error or access violation:

順便說一句,你可以通過傳遞一個空數組作爲第三個參數列join()省略c.*列:

->join(array('c' => 'companies'), 'u.company_id = c.id', array());