为什么Zend Framework(Zend_Db_table)拒绝这个SQL查询?

Mic*_*ith 3 php mysql zend-framework

我正在研究一个简单JOIN的两个表(urlscompanies).我正在使用此查询调用:

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

这是出于这个问题:

SELECT `u`.`id`, `u`.`url`, `u`.`company_id`, `c`.* FROM `urls` AS `u` INNER JOIN `companies` AS `c` ON u.company_id = c.id
Run Code Online (Sandbox Code Playgroud)

现在,我宁愿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"
Run Code Online (Sandbox Code Playgroud)

但我可以在MySQL CLI中完美地运行该查询.任何想法如何解决这个问题?

Bil*_*win 5

我只是在针对ZF 1.10和MySQL 5.1的测试脚本中尝试了该代码,它运行正常.

您使用什么用户/密码连接到数据库?它说"或访问冲突",所以我会测试你的db用户名是否具有正确的权限.尝试使用完全相同的用户/密码和连接方法在MySQL CLI中进行连接(因为权限可能因客户端主机而异,即使对于相同的用户/密码也是如此).

请参阅MySQL Zend Framework - SQLSTATE [42000]:语法错误或访问冲突:

顺便说一句,你可以c.*通过传递列的空数组作为第三个参数来省略列join():

->join(array('c' => 'companies'), 'u.company_id = c.id', array());
Run Code Online (Sandbox Code Playgroud)