2010-04-24 3 views
3

Je fais un simple système de CMS pour un site que je fais pour les utilisateurs non-tech pour éditer ...pour MySQL par erreur dans PHP

So far so good, mais quand je tente d'exécuter ce code Je continue d'obtenir: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de '' pages 'ORDER BY' pages '.' pageOrder 'ASC LIMIT 0, 30' à la ligne 1

Par l'erreur, il ressemble à un problème avec l'ordre par l'article et en fait il fonctionne sans elle ...

$sql = "SELECT * FROM 'pages' ORDER BY 'pages'.'pageOrder' ASC LIMIT 0 , 30"; 

$result = mysql_query($sql) or die(mysql_error()); 

maintenant, je sais qu'il n'y a rien de mal avec le code parce qu'à l'origine j'ai écrit mon propre SQL mais après avoir échoué je volé quelques-uns de phpmyadmin et ça donne quand même l'erreur mais ça marche dans phpmyadmin ...

Je suis vraiment à bout de ma tête avec ça, l'aide est très appréciée merci ...

Répondre

7

Vous ne devez pas écrire 'pages'. Utilisez des guillemets au lieu de guillemets simples pour les noms de table et de colonne. Les guillemets simples sont utilisés uniquement pour les chaînes.

Et les backticks ne sont pas nécessaires ici de toute façon. Les backticks ne sont généralement requis que pour les noms qui sont des mots réservés dans SQL et les noms contenant des caractères spéciaux ou des espaces. Donc, vous pouvez simplement faire ceci:

SELECT * FROM pages ORDER BY pageOrder LIMIT 30 
+0

bien à l'origine, je ne l'ai pas, que SQL est juste ce que je pris tout droit sorti de phpmyadmin mais cela ne résout pas mon problème ... – theflyinghaiwian

+0

Attends je me suis corrigé, ça l'a résolu - je ne comprends pas pourquoi mais merci bon monsieur :) – theflyinghaiwian

+0

@theflyinghaiwian - car les guillemets simples (') sont pour les chaînes seulement et appeler une 'table' comme une chaîne est une erreur de syntaxe. – Ben

3

Les guillemets de votre requête sont incorrects. Vous pouvez soit utiliser

$sql = "SELECT * FROM `pages` ORDER BY `pages`.`pageOrder` ASC LIMIT 0 , 30"; 

si vous avez vraiment besoin de se qualifier complètement la table/colonne, ou tout simplement laisser cela et utiliser

$sql = "SELECT * FROM pages ORDER BY pageOrder ASC LIMIT 0 , 30";