【问题标题】:Why is Zend Framework (Zend_Db_table) rejecting this SQL Query?为什么 Zend Framework (Zend_Db_table) 拒绝这个 SQL 查询?
【发布时间】:2010-06-10 21:29:29
【问题描述】:

我正在处理两个表(urlscompanies)的简单JOIN。我正在使用这个查询调用:

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 中完美地运行该查询。任何想法如何修复此查询?

【问题讨论】:

标签: php mysql zend-framework


【解决方案1】:

我刚刚在针对 ZF 1.10 和 MySQL 5.1 的测试脚本中尝试了该代码,它运行良好。

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

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

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

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

【讨论】:

    猜你喜欢
    • 2014-03-12
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 2012-02-06
    • 2021-03-17
    相关资源
    最近更新 更多