Технически этот синтаксис должен работать, хотя я бы порекомендовал немного его изменить, чтобы убедиться, что ваши данные правильно экранированы. Какое значение вы видите для $moderatorid
, когда получаете эту ошибку? Я подозреваю, что переменная по какой-то причине генерирует синтаксическую ошибку.
Попробуйте вместо этого:
$results = $this->getDbTable()
->fetchAll($this->getDbTable()
->getAdapter()
->quoteInto('moderatorid = ?', $moderatorid));
Это обеспечит правильное экранирование $moderatorid
и поможет предотвратить синтаксические ошибки, и, что еще более важно, предотвратит возможные инъекции SQL.
Другая проблема, связанная с использованием Zend_Db_Table::fetchAll()
, заключается в том, что при возникновении таких ошибок трудно отладить выполняемый запрос.
Чтобы обойти это, создайте оператор SELECT
самостоятельно, чтобы вы могли отобразить значение, если вам нужно отладить фактический выполняемый SQL.
$select =
$this->getDbTable()
->select()
->from($this->getDbTable()) // optionally you can specify cols as the 2nd param
->where('moderatorid = ?', $moderatorid);
echo $select; // e.g. SELECT `table`.* FROM `table` WHERE (moderatorid = 1)
$results = $this->getDbTable()->fetchAll($select);
Надеюсь, это поможет вам решить вашу проблему.
Некоторые полезные ссылки:
Zend_Db_Select
Zend_Db_Table