2014-01-27 2 views
0

У меня есть простой SQL запрос на выборку (по аналогии ниже), который возвращает нулевой результат при использовании заполнителей:Mysql заполнителем выберите запрос возвращения нулевых строк

$sql='SELECT * FROM table 
     WHERE column1=? 
      AND column2=?;'; 
$sth = $dbh->prepare($sql); 
$sth->execute(array(1,2)); 

Однако, когда я жёстко SQL, я получаю результаты:

$sql='SELECT * FROM table 
     WHERE column1=1 
      AND column2=2;'; 
$sth = $dbh->prepare($sql); 
$sth->execute(); 

Может ли кто-нибудь объяснить, почему мои заполнители не работают?

EDIT Подготовить заявление успешно. Вот полный запрос:

$sql='SELECT * FROM calendar 
LEFT JOIN class_schedule 
    ON calendar.week=class_schedule.week 
     AND calendar.class_day=class_schedule.class_day 
     AND calendar.class_time=class_schedule.class_time 
LEFT JOIN class_enrolledIn 
    ON class_enrolledIn.class=class_schedule.class 
LEFT JOIN users 
    ON class_enrolledIn.u_id=users.id 
WHERE calendar.week=? 
    AND calendar.class_day=? 
    AND u_id IS NOT NULL;'; 
+2

Вы уверены, что 'prepare()' преуспевает? См. [Как сжать сообщение об ошибке из PDO] (http://stackoverflow.com/questions/3726505/how-to-squeeze-error-message-out-of-pdo) и убедитесь, что вы установили PDO вверх для того чтобы бросить полезные ошибки вместо ошибки молча (по умолчанию). Каковы ваши настоящие имена столбцов? Я предполагаю, что не 'column1, column2'. Отправьте свой реальный запрос, поскольку это может иметь значение ... –

+0

Я проверил заявление о подготовке, и он успешно проходит через многочисленные тесты. Я также попытался окружить исполняемый элемент, если (! $ Sth-> execute (..)), и он также преуспевает. – thegalah

+0

Вы также должны сообщить нам, как он терпит неудачу. какой результат вы получаете вместо того, что вы ожидаете? Также могут возникнуть ошибки в логике PHP. Нам нужно увидеть больше кода. –

ответ

0

Я исправил его. Но все же не на 100% уверен, почему целое число не работает как ввод в поле enums, поскольку оно работает с жестко закодированным sql.

В основном что-то делать с перечислениями и int

Смежные вопросы