2014-01-09 2 views
-4

Я знаю, что каждую неделю кто-то задает один и тот же вопрос, но я также заметил, что решение (и проблема) всегда разные.«У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее ...»

Я получаю сообщение об ошибке MySQL:

У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «пациентами» (id, name, birthyear). VALUES (2, 'Itzik Karasik', '1997') 'по строке 1

Это не первый раз, когда я получаю эту ошибку, но все равно могу найти проблему в запросе. запрос является:

$query = "INSERT INTO 'patients' (id,name,birthyear) 
     VALUES ($id, '$name', '$birthyear')"; 

и окончательный запрос (я повторил $query):

INSERT INTO 'patients' (id,name,birthyear) VALUES (2, 'Itzik Karasik', '1997') 

patients таблица имеет 3 поля:

  1. ID - BIGINT
  2. имя - varchar
  3. рождение - varchar
+0

использовать 'patients' вместо' 'patients'' –

+0

Не указывайте свое имя таблицы , Это заставляет думать, что это строка. Если вы хотите это сделать, вам нужно использовать обратные ссылки, а не одинарные кавычки '' INSERT INTO 'patient' (id, name, birthyear) VALUES (...)' '. –

+1

У вас есть уязвимость в SQL-инъекции. – SLaks

ответ

7

Не указывайте названия таблиц. Побег их с backtick (`), если вам нужно.

$query = "INSERT INTO patients (id , name , birthyear) 
    VALUES ('$id', '$name', '$birthyear')"; 
+0

@Alireza Fallah (согласно вашему комментарию в вашем редактировании) - Как мы знаем что «$ id» нужно указывать? Существует еще один ответ с цитированным «$ id», где OP-состояния * «Я пробовал, bu t он не работал »* http://stackoverflow.com/questions/21030411/you-have-an-error-in-your-sql-syntax-check-the-manual-that-corresponds-to/21030425# comment31614474_21030440 –

+0

@Fred -ii- Вы считаете, что 'id' является числовым полем. Возможно, это не так. –

+0

У меня также было чувство об этом раньше, и где я сделал комментарий к OP, чтобы использовать кавычки вокруг '$ id', но OP показывает в вопросе, что столбец' id' является 'bigINT' @Lotharyx и I удалил мой комментарий об этом. –

2

Вот как бы я это сделать:

$query = "INSERT INTO `patients` (`id`,`name`,`birthyear`) 
      VALUES ('$id', '$name', '$birthyear')"; 
+0

Я пробовал, но это не сработало –

+0

Затем добавьте: VALUES ('$ id', '$ name', '$ birthyear') " – mkabanen

+0

Определить, что «не работает». Какие сообщения об ошибках вы получаете? @ReuvenKarasik и убедитесь, что вы действительно связаны с вашей БД. –

0

Это будет работать:

$query = " INSERT INTO patients (id,name,birthyear) VALUES 
    ({$id}, '{$name}', '{$birthyear}') "; 
+0

В этом случае фигурные скобки вокруг переменных совершенно не нужны. – tadman

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

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