Ошибка SQL в запросе INSERT INTO

У меня эта ошибка, и я не могу найти правильный ответ. Я пишу это на PHP, но после отладки я попытался написать это прямо на phpMyAdmin. Вот мой SQL-запрос:

INSERT INTO users ( 'fName' , 'lName' , 'pCity' , 'cue' , 'email' , 'pass' , 'bDate' ) VALUES ('Me', 'You', 'Sofia', 'adf', '***', '***', '02/02/2010')

И вот ошибка, которую я получаю:

 #1064 - 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 ''fName' , 'lName' , 'pCity' , 'cue' , 'email' , 'pass' , 'bDate' ) VALUES ('Kali' at line 1

Я получаю ту же ошибку при запуске соответствующего сценария php на сервере. Есть идеи, где я ошибаюсь?

5 ответов

Решение

Проблема заключается в одинарных кавычках в идентификаторах столбцов.

Либо используйте "`", либо не используйте кавычки

INSERT INTO users ( fName , lName , pCity , cue , email , pass , bDate ) VALUES ('Me', 'You', 'Sofia', 'adf', '***', '***', '02/02/2010')

Как упомянул Тадман, обратные галочки нужны только в том случае, если в идентификаторе столбца есть пробел или зарезервированные слова.

пример

INSERT INTO users ( fName , `Last Name` , pCity , cue , email , pass , bDate ) VALUES ('Me', 'You', 'Sofia', 'adf', '***', '***', '02/02/2010')

Не заключайте идентификаторы столбцов в одинарные кавычки. Используйте галочки:

 INSERT INTO users ( `fName` , `lName` , `pCity` , `cue` , `email` , `pass` , `bDate` ) 
 VALUES ('Me', 'You', 'Sofia', 'adf', '***', '***', '02/02/2010')

Неправильные цитаты:

INSERT INTO users ( 'fName' , 'lName' , 'pCity' ,  etc...
                    ^-----^-- etc...

' кавычки превращают вещи в строки. Вы хотите клюшки ` вместо:

INSERT INTO users ( `fName` , `lName` , `pCity` , etc...

Поскольку никто не упомянул об этом, я бы не стал использовать имена столбцов с пробелами, специальными символами или зарезервированными словами. Имена столбцов, требующие обратных тиков, в конечном итоге приведут к трудным поискам ошибок.

Когда вы выполняете INSERT INTO, вам не нужно использовать одинарные кавычки вокруг имен столбцов. Если вы вставляете INTO столбцы, которые имеют пробелы в имени столбца, то вы используете обратную черту, чтобы окружить имя столбца.

INSERT INTO users ( `First Name` , `Last Name` , pCity , etc ....
Другие вопросы по тегам