Sqlite3 и PDO выдают с помощью ORDER BY - PullRequest
2 голосов
/ 05 апреля 2010

Я пытаюсь использовать оператор SQL

SELECT * FROM table ORDER BY column

через PDO-объект в PHP. Проблема в том, что я всегда получаю сообщение об ошибке (вызов функции-члена fetchall () для необъекта - это значит, что запрос не возвращал объект PDO) при использовании имен всех столбцов EXCEPT для ID. Когда я запрашиваю

SELECT * FROM table ORDER BY ID

это работает. ID - это КЛЮЧ ПЕРВИЧНОГО ЦЕЛОГО, все остальные столбцы - ТЕКСТ или ЦИФРА, ни один из них не будет работать с предложением ORDER BY.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 06 июля 2015

Замените ваше ORDER BY заявление на ORDER BY CAST(COLUMN AS REAL). Может сортировать REAL значения.

0 голосов
/ 05 апреля 2010

Это может быть проблемой с временными файлами, как вы предложили в своем комментарии к ответу Фрэнка Хейкенса.

http://www.sqlite.org/tempfiles.html говорит:

2.6. Переходные показатели

SQLite может использовать временные индексы для реализации таких функций языка SQL, как:

* Предложение ORDER BY или GROUP BY
* Ключевое слово DISTINCT в агрегированном запросе
* Составные операторы SELECT, к которым присоединяются UNION, EXCEPT или INTERSECT

Каждый переходный индекс хранится в своем собственном временном файле.

Если и где файлы создаются, управляется SQLITE_TEMP_STORE, PRAGMA temp_store и PRAGMA temp_store_directory, см. http://www.sqlite.org/pragma.html

...