Zend_Db: подготовленный оператор не обрабатывает параметры - PullRequest
1 голос
/ 02 сентября 2010

Я использую Zend_Db с драйвером Pdo_Mysql. Этот запрос не дает никаких результатов:

$s = $db->prepare('SELECT ET.id
                    FROM elementTypes AS ET, language AS L1 
                    WHERE L1.strId = ET.dispName AND L1.language = ?');
$s->execute(array(2));                                          
pr($s->fetchAll());

Если я жестко закодировал параметр, ожидаемые строки возвращаются.

Что здесь происходит?

Редактировать: Вот урезанный скрипт с еще более простыми запросами: http://pastebin.com/84UtcGGZ

Eidt 2: Я углубился ниже и обнаружил, что проблема заключается в PDO и сравнении ENUMS с целыми числами . Смотрите этот вопрос: PDO не может сравнивать mysql ENUM с использованием целых чисел в подготовленных выражениях Если вы знаете какие-либо исправления / обходные пути, как заставить это работать на Zend_Db, пожалуйста, пишите! :) **

1 Ответ

1 голос
/ 02 сентября 2010

Причина, по которой оператор не работает, состоит в том, что L1.language является ENUM, и вы не можете сравнить ENUMS с целыми числами в Zend_Db / PDO.

Почему и как этого избежать, объясняется в этом вопросе: PDO не может сравнивать mysql ENUM с использованием целых чисел в подготовленных выражениях

...