PDO: Unknown column in 'order clause'
В одном маленьком проекте, решил задействовать фреймворк для бд Medoo, который работает через PDO. Однако, вскоре столкнулся с ошибкой [42S22, 1054] Unknown column 'on' in 'order clause'. Я довольно долго не мог въехать в чем проблема, а когда чисто случайно нашел решение, удивился. Поэтому и оставляю эту заметку, для всех тех, кто также столкнется с чем-то похожим.
Запрос был довольно простой:
1 2 3 4 5 6 7 8 |
SELECT * FROM projects ORDER BY CASE status WHEN "on" THEN 0 WHEN "stop" THEN 1 WHEN "off" THEN 2 END |
Однако по какой-то причине он приводил к ошибке вида:
1 2 3 4 5 6 7 |
Array ( [0] => 42S22 [1] => 1054 [2] => Unknown column 'on' in 'order clause' ) |
Самое интересное было то, что при попытке выполнить его в Adminer, все работало.
Я долго ковырялся и пытался понять в чем же проблема.. Оказалось, что в запросе надо просто заменить кавычки с двойных на одинарные, т.е. вот так:
1 2 3 4 5 6 7 8 |
SELECT * FROM projects ORDER BY CASE status WHEN 'on' THEN 0 WHEN 'stop' THEN 1 WHEN 'off' THEN 2 END |
После этого, всё заработало как и ожидалось. Не знаю, баг ли это или особенность, просто в случае подобной проблемы, попробуйте поступить так же.
Author: | Tags: /
| Rating:
Leave a Reply