2011-01-03 24 views
2

Ich habe die folgenden Zeilen PHP-Code in meiner Datei zusammen mit einem anderen Code ein:PHP Einfügen funktioniert nicht richtig

$command = "INSERT INTO inventory_items (Index, Name, Price) VALUES (NULL, 'Diamond', '3.99')"; 
$insertion = mysql_query($command) or die(mysql_error()); 
if ($insertion == FALSE) 
{ 
echo "Error: Insert failed."; 
} 
else 
{ 
echo "Insert successful."; 
} 

Es hält diesen Fehler zurückgegeben:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Index, Name, Price) VALUES (NULL, 'Diamond', '3.99')' at line 1 

MyAdmin sagt, ich bin mit MySQL-Clientversion 5.0.91. Was mache ich falsch? Ich kann es einfach nicht herausfinden! Ich habe versucht, viel zu suchen ...

+0

Hat eine der Antworten hier Ihr Problem gelöst? –

Antwort

4

Index ist ein reserviertes Wort in MySQL und als solche, müssen Sie entweder den Namen der Spalte ändern, oder es mit Backticks entkommen. Versuchen Sie, diese $command:

$command = "INSERT INTO inventory_items (`Index`, Name, Price) VALUES (NULL, 'Diamond', '3.99')"; 

Lesen Sie mehr über reservierte Wörter hier: http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

+0

Ich sehe nicht "db" auf dieser Liste, aber ich lief auf das gleiche Problem wie das OP. Ich änderte schließlich meinen Tabellennamen in "Dbentry" und es funktionierte. Also, gibt es eine zusätzliche reservierte Liste, über die ich nichts weiß, oder habe ich etwas anderes falsch gemacht? – Bryan

+0

@Bryan: Wenn alles, was Sie geändert haben, Ihr Tabellenname war, dann denke ich, db ist ein anderes reserviertes Wort. Nicht sicher, ob es eine andere Liste als diese gibt. –

+0

Als allgemeine Regel sollten Sie Spaltennamen und Tabellennamen immer mit Backticks einschließen. Wenn eine zukünftige Version von (my) SQL ein neues reserviertes Wort einführt, kann Ihre einmal funktionierende Abfrage fehlschlagen. – DeveloperChris

3

Try this:

$command = "INSERT INTO inventory_items (`Index`, Name, Price) VALUES (NULL, 'Diamond', '3.99');"; 

MySQL reserved words and how to treat them.

+0

Ich habe versucht, wie Sie gesagt haben, aber haben den gleichen Fehler erhalten: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, für die richtige Syntax in der Nähe von '@Index, Name, Preis) VALUES (NULL,' Diamond ',' 3.99 ')' in Zeile 1 – user561912

+0

Es ist nicht @, sondern 'Index' 'stattdessen. –

+0

Oh, tut mir leid, es hat funktioniert! VIELEN DANK! – user561912

0

können Sie die Spalten in Ihrer inventory_items Tabelle überprüfen, dass sind:

Index 
Name 
Price 

Und dass Sie den Index-Feld auf AUTO_INCREMENT haben.

Die beste Sache ist wahrscheinlich, dieses Feld aus Ihrer Insert-Anweisung zu entfernen.

Versuchen

$command = "INSERT INTO inventory_items (Name, Price) VALUES ('Diamond', '3.99')"; 

Da Sie nicht einen Index ohnehin einsetzen.

Hoffe, dass hilft!

Verwandte Themen