Я прочитал каждый ответ, который мог оштрафовать на SO, перед тем как опубликовать этот вопрос. Хотя они и не были похожими, ни одна из них не решала мою конкретную проблему (или я их не узнал).
У меня есть класс таблицы, который расширяет Zend_Db_Table_Abstract. В модели я пытаюсь вернуть одну строку, используя метод join () и основываясь на идентификаторе таблицы, например:
$getCategoryResults = $this->select();
$getCategoryResults->setIntegrityCheck(false)
->from(array('c'=> 'categories', '*'))
->join(array('e' => 'events'),'c.events_idEvent = e.idEvent', array())
->where("e.idEvent = ?", $idEvent);
когда я повторяю объект sql, я получаю это:
SELECT `c`.* FROM `categories` AS `c`
INNER JOIN `events` AS `e` ON c.events_idEvent = e.idEvent
WHERE (e.idEvent = '1')
Как ни странно, если я использую этот формат,
->where("e.idEvent = $idEvent");
мой вывод "ГДЕ (e.idEvent = 1)". Значение не заключено в тики, но, похоже, работает для MySQL. Когда я запускаю запрос в phpMyAdmin, я получаю это:
idCategory Тип displayOrder описание localStartTime events_idEvent
1 человек 1 5k Run / Walk 2010-02-18 23:59:59 1
2 команды 2 5k Категория команды 2010-02-18 23: 59: 591 1
что я и ожидал увидеть. Но когда я запускаю свое приложение в браузере, я получаю это уродство:
SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL есть ошибка; обратитесь к руководству, соответствующему вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'SELECT c
. * FROM categories
AS c
INNER JOIN events
AS e
ON c.events_id' в строке 1
Я проверил каждый ресурс, который могу придумать. Надеемся, что объединенная удивительность SO uber-экспертов сделает эту мою последнюю остановку. : D