2011-02-05 5 views
1
mysql_query("INSERT INTO dictionary ('word', 'definition') VALUES ('".$word."','".$definition."');") 

qui ne veut pas exécuter, quand je echo - j'obtiens ceci:
plus PHP mySQL INSERT amusant

INSERT INTO dictionary ('word', 'definition') VALUES ('monkey','monkey'); 

Ainsi, les valeurs sont attraire en correctement, si j'eteint mysql_error() I get:

Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la syntaxe droit d'utiliser près de « » mot « « définition » VALEURS (« singe », « singe ») » à la ligne 1

Des idées? Je suis perplexe.

+0

Comment les tables sont-elles configurées dans la base de données? Pourrait être une erreur de valeur de champ – Phil

+2

S'il s'agit d'un problème récurrent, apprenez à utiliser les messages d'erreur: le premier caractère de «syntaxe correcte à utiliser près de:» est l'endroit où l'analyseur s'est arrêté parce que vous avez fait quelque chose de mal. C'est une citation unique, qui aurait dû vous signaler que mettre des guillemets simples là est faux. –

+1

Way to go. Quelqu'un a rejeté une question, qui pourrait en fait être un exemple d'information à fournir pour régler le problème. – Mchl

Répondre

6

Vous devez utiliser des backticks pour les noms de champs:

INSERT INTO dictionary (`word`, `definition`) 

(.. Ou, bien sûr, sans les guillemets du tout, mais il est better to have them)

+0

Je ferai valoir qu'il est préférable de ne pas les avoir, mais oui ...c'est la raison;) – Mchl

+0

Pourquoi est-il préférable de les avoir? – BoltClock

+1

@BoltClock http://stackoverflow.com/questions/261455/using-backticks-around-field-names Cependant, ils ne sont pas conformes à ANSI SQL donc je suppose que si vous ciblez un SGBD différent, vous devez passer mySQL à ANSI mode et utiliser des guillemets '' '- intéressant, ne le savais pas (Pinging @Mchl) –

0

Yeh supprime les guillemets des définitions de colonne. Vous en avez seulement besoin autour des cordes que vous insérez.

0

Lorsque vous faites référence les noms de colonnes pour INSERT vous devriez être utilisant des guillemets (`) pas de guillemets simples. (Les guillemets simples indiquent à MySQL que les valeurs sont des chaînes et non des références de colonnes). Supprimez les guillemets simples ou utilisez les guillemets et le problème devrait se résoudre.

0

Changez vos guillemets simples autour de mots et dictionnaire à contre-apostrophes:

INSERT INTO dictionary (`word`, `definition`) VALUES ('monkey','monkey'); 
0

correcte Méthode:

mysql_query("INSERT INTO `dictionary` (`word`, `definition`) VALUES ('".$word."','".$definition."');") 

qui sera ouput comme ceci:

INSERT INTO `dictionary` (`word`, `definition`) VALUES ('monkey','monkey'); 
0
mysql_query("INSERT INTO dictionary (`word`, `definition`) VALUES ('".$word."','".$definition."');") 

Remarque les apostrophes. Les noms de champs doivent soit n'utiliser aucune apostrophe, soit utiliser ceux indiqués ici.

0

si cela ne fonctionne pas:

mysql_query("INSERT INTO dictionary (word,definition) VALUES ('".$word."','".$definition."')"); 

alors vous avez un problème avec les noms de champs ... vérifiez votre nom dans le tableau ... ou peut-être vous manque quelque chose! à quoi ressemble ta table?