Проблема заключается в том, что 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 более удобочитаемым.)
Конечно, учитывая, что вам нужно будет указывать имя столбца везде, где вы его используете, вы можете решить, что было бы проще просто переименовать его, так что это не зарезервированное слово - отчасти это зависит от того, как многое другое код уже использует схему.
'date' не требует цитирования - см. Http://dev.mysql.com/doc/refman/5.7/reserved-words.html. Конечно, это * можно * процитировать. –