Почему этот оператор SQL INSERT возвращает синтаксическую ошибку? - PullRequest
2 голосов
/ 27 мая 2009

Хорошо, у меня очень простая база данных mysql, но когда я пытаюсь выполнить этот запрос через mysql-admin, я получаю странные ошибки

INSERT INTO customreports (исследование, тип, режим, выберите, описание) ЗНАЧЕНИЯ («1», «2», «3», «4», «5»);

Ошибка:

1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с «select, description) VALUES (« 1 »,« 2 »,« 3 »,« 4 »,« 5 »)» в строке 1

Ответы [ 7 ]

13 голосов
/ 27 мая 2009

У вас проблемы, потому что вы используете зарезервированные слова SQL в качестве имен столбцов, а не экранируете их. Попробуйте вот так:

INSERT INTO `customreports`
(`study`, `type`, `mode`, `select`, `description`)
VALUES
('1', '2', '3', '4', '5');
3 голосов
/ 27 мая 2009

Да, я бы переписал как:

INSERT INTO [customreports] ([study], [type], [mode], [select], [description]) VALUES ('1', '2', '3', '4', '5' );

0 голосов
/ 27 мая 2009

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

0 голосов
/ 27 мая 2009

Правильно для Хаоса ... но важно помнить, что вы должны сделать все возможное, чтобы НЕ использовать зарезервированные слова в качестве имен столбцов в таблице ... такие как SELECT и TYPE .... не положительный результат трех других но вот где твой конфликт. Да, явное указание кавычек вокруг полей скажет SQL, что вы имеете в виду поле внутри, но также лучше знать, ПОЧЕМУ его ошибка, а не просто обходное решение ... помогает предотвратить подобные проблемы в будущем.

0 голосов
/ 27 мая 2009

Слово «выбрать» зарезервировано в sql. Интерпретатор считает, что вы пытаетесь использовать оператор SELECT внутри оператора INSERT INTO. Вам необходимо заключить имена полей, чтобы интерпретатор не считывал их как команды.

Обновление для MySQL:

insert into customreports ('study','type','mode','select','description') values...
0 голосов
/ 27 мая 2009

«SELECT» - зарезервированное слово в SQL ... используйте слово, отличное от «select»

0 голосов
/ 27 мая 2009

просто предположение, но зарезервированное слово "выбрать" (указано как имя столбца) вызывает проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...