简体   繁体   中英

Sqlite3 and PDO issue with ORDER BY

I try to use the SQL statement

SELECT * FROM table ORDER BY column

via an PDO-Object in PHP. Problem is, that I always get an error (Call to a member function fetchall() on a non-object - that means, the query did not return a PDO-object) when using the names of all columnname EXCEPT for ID. When I query

SELECT * FROM table ORDER BY ID

it works. ID is the PRIMARY INTEGER KEY, all other columns are TEXT or NUMERIC, neither of them would works with the ORDER BY clause.

Any ideas?

It could be an issue with temporary files as you've suggested in your comment to Frank Heikens's answer.

http://www.sqlite.org/tempfiles.html says:

2.6 Transient Indices

SQLite may make use of transient indices to implement SQL language features such as:

* An ORDER BY or GROUP BY clause
* The DISTINCT keyword in an aggregate query
* Compound SELECT statements joined by UNION, EXCEPT, or INTERSECT

Each transient index is stored in its own temporary file.

If and where files are created is controlled by SQLITE_TEMP_STORE , PRAGMA temp_store and PRAGMA temp_store_directory , see http://www.sqlite.org/pragma.html

Replace your ORDER BY statement with ORDER BY CAST(COLUMN AS REAL) . It can sort REAL values.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM