2010-04-05 4 views
2

je tente d'utiliser l'instruction SQLSqlite3 et AOP problème avec ORDER BY

SELECT * FROM table ORDER BY column 

via un AOP-objet en PHP. Le problème est que j'obtiens toujours une erreur (appel à une fonction membre fetchall() sur un non-objet - ce qui signifie que la requête n'a pas renvoyé un objet PDO) lors de l'utilisation des noms de tous les colonnes EXCEPT pour ID. Lorsque je fais une recherche

SELECT * FROM table ORDER BY ID 

cela fonctionne. ID est la clé principale, toutes les autres colonnes sont TEXT ou NUMERIC, aucune d'entre elles ne fonctionnerait avec la clause ORDER BY.

Des idées?

Répondre

0

Il pourrait être un problème avec les fichiers temporaires comme vous avez suggéré dans votre commentaire à la réponse de Frank Heikens.

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

2.6 Indices transitoires

SQLite peut utiliser des indices transitoires à mettre en œuvre les fonctionnalités du langage SQL telles que:

* ORDER BY ou GROUP BY clause
* Le DISTINCT mot clé dans une requête agrégée
* Instructions SELECT composées jointes par UNION, EXCEPT ou INTERSECT

Chaque index transitoire est stocké dans son propre fichier temporaire.

Si et où les fichiers sont créés est contrôlé par SQLITE_TEMP_STORE, PRAGMA temp_store et PRAGMA temp_store_directory, voir http://www.sqlite.org/pragma.html

+0

Oui, merci c'était la variable SQLITE_TEMP_STORE. Je dois le changer avant d'utiliser ORDER BY car sinon sqlite essaie d'écrire un fichier temporaire. Voir aussi ceci: http://www.sqlite.org/tempfiles.html#tempstore – Maenny

0

Remplacez votre déclaration ORDER BY avec ORDER BY CAST(COLUMN AS REAL). Il peut trier valeurs.