2012-05-06 2 views
1

У меня есть строка кода в PHP следующим образом ...Получение ошибка синтаксиса SQL

mysql_query("INSERT INTO `updates` (project_id, date, update) VALUES ('{$project}', '{$date}', '{$update}')") or die(mysql_error()); 

Однако я получаю следующее сообщение об ошибке синтаксиса SQL ...

У вас есть ошибка в синтаксисе SQL; в руководстве, соответствует версии сервера MySQL для корректного синтаксиса использовать возле «обновления) VALUES (» 14' , „2012-05-06“, „Test обновления“)»в строке 1

Если бы кто-нибудь мог помочь мне в этом, это было бы здорово, возможно, это очевидно, но я просто не вижу, что здесь не так!

+0

Одна вещь, которая особенно полезна при определении того, что MySQL жалуется, заключается в том, чтобы сохранить ваш запрос в переменной, а затем «echo' it». Это действительно помогает при просмотре этих ошибок. –

ответ

0

date и update зарезервированные слова в MySQL.

Вы можете использовать:

"INSERT INTO `updates` (project_id, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')" 

Хотя в идеале вы никогда не должны использовать зарезервированное слово в качестве имени объекта. Он не имеет никаких преимуществ, но имеет несколько незначительных недостатков (например, делает SQL менее переносимым).

Кроме того, довольно незначительная точка, если project_id является целым типизированным полем, передайте ему целое число, а не строку. Как:

INSERT INTO `updates` (project_id, `date`, `update`) VALUES ({$project}, '{$date}', '{$update}') 
+0

Downvoter помочь объяснить? – Corbin

1

Изменить запрос, как показано ниже:

mysql_query("INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')") or die(mysql_error()); 

Это потому, что дата и обновление регистрируются ключевые слова в MySQL. Мы не можем использовать его непосредственно в запросе. Нам нужно избегать этого.

0

update - ключевое слово в SQL, инкапсулируйте ваши поля mysql в обратные ссылки.

0

Прежде всего Вещь: вы не можете использовать myserver worderver. Когда вы его используете, будьте готовы тратить часы на обнаружение ошибок. Вот список резервных слов: НЕ ИСПОЛЬЗОВАТЬ ЛЮБЫЕ СРЕДИ ИТ http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

Во-вторых, даже если вы хотите, чтобы осмелиться использовать сохраненную ключевое слово. Префикс таблицы пользователя или префикс столбца вместе с зарезервированным ключевым словом.

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

"INSERT INTO `updates` (`project_id`, `date`, `update`) VALUES ('{$project}', '{$date}', '{$update}')" 

и если вы не процитировать то цитату никто из них

"INSERT INTO updates (project_id, date, update) VALUES ('{$project}', '{$date}', '{$update}')" 

Надеется, что это поможет вам

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