-2

I have a problem. I created a SQL Query, to insert something into the database:

INSERT INTO order (kundennummer,empfaenger,adresse,plz,ort,land,email,time,approvalPending) 
VALUES ('232784', 'Niklas Peters', 'Some Stret', 'PostalCode', 'Wien', 'AT', 'email@email.com', '1454593142', '1')

But I always get the Error:

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 'order (kundennummer,empfaenger,adresse,plz,ort,land,email,time,approvalPending) ' at line 1

My Code is PHP

$sql = "INSERT INTO order (kundennummer,empfaenger,adresse,plz,ort,land,email,time,approvalPending) VALUES ('".$kdnr."', '".$emp."', '".$adresse."', '".$plz."', '".$ort."', '".$land."', '".$email."', '".$time."', '1')";

I just dont know what is wrong - Am I blind?

Cheers - would be glad for help!

Lukasz Szozda
  • 162,964
  • 23
  • 234
  • 275
Niklas Riecken
  • 303
  • 1
  • 6
  • 20

2 Answers2

13

Quote order with backticks:

INSERT INTO `order` (kundennummer,empfaenger,adresse,plz,ort,land,email,time,approvalPending) 
VALUES ('232784', 'Niklas Peters', 'Some Stret', 'PostalCode', 'Wien', 'AT', 'email@email.com', '1454593142', '1');

ORDER (R) is reserved word.

Reserved words are permitted as identifiers if you quote them

Lukasz Szozda
  • 162,964
  • 23
  • 234
  • 275
5

Your table name matches a reserved word, so will need to be quoted in SQL queries, e.g

INSERT INTO `order` (kundennummer,empfaenger,adresse,plz,ort,land,email,time,approvalPending) VALUES ('232784', 'Niklas Peters', 'Some Stret', 'PostalCode', 'Wien', 'AT', 'email@email.com', '1454593142', '1')

NB. When calling this from PHP, you may want to consider using prepared queries a la PDO, etc.

Rowland Shaw
  • 37,700
  • 14
  • 97
  • 166