2012-01-29 4 views
4

сообщение об ошибке, я получил:MySQL ошибка - «У вас есть ошибка в вашем SQL синтаксиса»

У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «словом», «группой», «самонаблюдением»). VALUES («элемент», «а», «примечание к себе») »в строке 1

код РНР:

$toq="INSERT INTO articles ('word','group','selfnote') 
VALUES ('$ttle','$wrdr','$snote')"; 

Я пытался найти Solutins, но они, похоже, не работает, как Вторя дает:

INSERT INTO articles ('word','group','selfnote') 
VALUES ('item','a','note to self') 

, который кажется хорошо для меня. В чем проблема?

+0

Вы пытались выполнить тот же самый запрос в phpMyAdmin? –

+0

Это тоже дало ошибку. – axiomer

+2

Обязательное примечание: 'mysql_real_escape_string()' ваши данные, иначе Bad Things ** будет **, например. когда '$ snote ==" Это просто ". – Piskvor

ответ

7

Использовать обратные выходы ` вместо котировок ', чтобы избежать имен. Цитаты представляют собой разделители строк.

$toq="INSERT INTO articles (`word`,`group`, `selfnote`) VALUES ('$ttle','$wrdr','$snote')"; 
8

Вы разместили кавычки в именах полей. Это заставляет MySQL обрабатывать их как строки, а не имена полей - и вы не можете вставлять их в строки.

INSERT INTO articles (word, group, selfnote) VALUES (....); 

- правильный синтаксис. Единственным типом цитирования, разрешенным для имен полей, является использование обратных шагов для выхода из зарезервированных текстовых полей, например.

INSERT INTO articles (table, int, varchar) ... 

потерпит неудачу из-за использованием 3 зарезервированных слов, но при добавлении обратных кавычек

INSERT INTO articles (`table`, `int`, `varchar`) ... 

делает их приемлемыми в качестве имен полей.

+1

Предположительно, он пытался избежать голого ключевого слова 'group'. (Я не знаю, приемлемо ли это в этом конкретном контексте или нет.) – Neil

4

Вы не должны цитировать имена столбцов с нормальными кавычками (''), а используйте кавычку (``).

+5

Слово дня ... backticks. – drew010

+1

они называются backticks? – slapthelownote

+1

@slapthelownote: Руководство MySQL, похоже, так думает; Я не могу думать о более авторитетном ресурсе: «Символ кавычки идентификатора - это обратная сторона (« '») ». http://dev.mysql.com/doc/refman/5.0/en/identifiers.html – Piskvor

2

Вы должны удалить или заменить кавычки имен столбцов обратными окнами (`). Поскольку «группа» является ключевым словом, вы должны использовать обратные ссылки:

INSERT INTO articles (`word`, `group`, `selfnote`) VALUES (....); 
Смежные вопросы