Почему Zend Framework (Zend_Db_table) отклоняет этот SQL-запрос? - PullRequest
3 голосов
/ 11 июня 2010

Я работаю над простым 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. Любые идеи, как исправить этот запрос?

1 Ответ

5 голосов
/ 11 июня 2010

Я только что попробовал этот код в тестовом скрипте для ZF 1.10 и MySQL 5.1, и он отлично работает.

Какой логин / пароль вы используете для подключения к вашей базе данных?Он говорит «или нарушение прав доступа», поэтому я бы проверил, что ваше имя пользователя базы данных имеет правильные привилегии.Попробуйте подключиться в интерфейсе командной строки MySQL, используя точный тот же пользователь / пароль и метод подключения (поскольку привилегии могут различаться в зависимости от хоста клиента, даже для одного и того же пользователя / пароля).

См. MySQL Zend Framework - SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа:

Кстати, вы можете опустить c.* столбцы, передав пустой массив для столбцов в качестве третьего аргумента join():

->join(array('c' => 'companies'), 'u.company_id = c.id', array());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...