我正在处理一个简单JOIN
的两个表(urls
和companies
)。我正在使用此查询调用:
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 :(得分:5)
我刚刚在针对ZF 1.10和MySQL 5.1的测试脚本中尝试了该代码,它运行正常。
您使用什么用户/密码连接数据库?它说“或访问冲突”,所以我会测试你的db用户名是否具有正确的权限。尝试使用完全相同的用户/密码和连接方法在MySQL CLI中进行连接(因为权限可能因客户端主机而异,即使对于相同的用户/密码也是如此)。
请参阅MySQL Zend Framework - SQLSTATE[42000]: Syntax error or access violation:
顺便说一下,您可以通过将列的空数组作为c.*
的第三个参数传递来省略join()
列:
->join(array('c' => 'companies'), 'u.company_id = c.id', array());