2015-01-20 4 views
0

Привет всем, я получаю сообщение об ошибке в вставки запроса ниже запрос,SQL Синтаксическая ошибка в вставки запроса

эхо $ SQL = "INSERT INTO события (режим, название, по алфавиту, дате, статус) VALUES ('$ режим», '$ название', '$ убывание', 'дата $', '$ статус')";

и ниже ошибку

Ошибка в вашем SQL синтаксиса

Проверьте инструкцию, которая соответствует вашей версии сервера MySQL для правильного синтаксиса использовать вблизи 'desc,date,status)VALUES('Event','fdsagsd','fa sdgavsd ','2015-01-21','1')' at line 1

ответ

2

Desc неправильно понимается *. вам нужно либо сбежать от него с помощью ``, либо использовать лучшее имя для столбца, как описание (желательно позже или и того и другого).

INSERT INTO event(mode,title,`desc`,date,status)VALUES('Event','fdsagsd','fa sdgavsd ','2015-01-21','1'); 
  • Описание изделия также используется в запросах SELECT, чтобы заказать результат по убыванию с помощью указанного столбца.
3

Проблема заключается в том, что desc является зарезервированным словом (вспомнит order by), так что вам нужна квоте его с обратными кавычками, когда вы используете его в качестве имени столбца.

От section 9.2 of the MySQL documentation:

Некоторые объекты в MySQL, в том числе базы данных, таблицы, индекса столбца, псевдоним, вид, хранимые процедуры, перегородки, табличного и другие имена объектов известны в качестве идентификаторов. В этом разделе описывается допустимый синтаксис идентификаторов в MySQL. В разделе 9.2.2 «Чувствительность регистратора» описывается, какие типы идентификаторов чувствительны к регистру и при каких условиях.

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

...

Идентификатор кавычка является кавычка («`»):

mysql> SELECT * FROM `select` WHERE `select`.id > 100; 

Так SQL вы хотите:

INSERT INTO event(mode, title, `desc`, date, status) 
VALUES ('Event', 'fdsagsd', 'fa sdgavsd ', '2015-01-21','1') 

(Дополнительный пробелов не необходимо, конечно, но я бы рекомендовал включить их, чтобы сделать SQL более удобочитаемым.)

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

0

В качестве даты и desc являются ключи, Add Backtick (`) до и после каждого поля.

+0

'date' не требует цитирования - см. Http://dev.mysql.com/doc/refman/5.7/reserved-words.html. Конечно, это * можно * процитировать. –

Смежные вопросы