Ошибка 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 ....