MySQL Insert синтаксическая ошибка - не могу найти его!

0

Там должно быть что-то маленькое, я здесь не хватает, но я не могу найти его для жизни.

$insert = mysql_query("INSERT INTO USERS 
(`FBID`, `FIRST_NAME`, `LAST_NAME`, `GENDER`) 
VALUES ('$fbid', '$firstName', '$lastName', '$gender')");

Ошибка:

Ошибка: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с "1" в строке 1

Любые идеи?

  • 3
    Попробуйте повторить строку SQL, чтобы увидеть, что вы передаете в mysql_query .
  • 0
    Это должны быть одинарные кавычки ( ' ) и обратные кавычки (`) в операторе SQL?
Показать ещё 2 комментария
Теги:
insert

4 ответа

2

У вас нет правильных экранов переменных. Используйте mysql_real_escape_string и введите код следующим образом:

$insert = mysql_query("INSERT INTO USERS (`FBID`, `FIRST_NAME`, `LAST_NAME`, `GENDER`)
   VALUES (
            '".mysql_real_escape_string($fbid)."',
            '".mysql_real_escape_string($firstName)."',
            '".mysql_real_escape_string($lastName)."',
            '".mysql_real_escape_string($gender)."'
          )");

Если переменные содержат какие-либо кавычки, они создают проблему, если вы их не избегаете.

  • 0
    Спасибо за предложения. Я перепробовал все, но продолжаю получать ошибку. Хотя запрос выполняется правильно и, кроме сообщения об ошибке, проблем нет.
  • 1
    @Steve: если ваш запрос выполняется правильно, данные вставлены, но MySQL по-прежнему жалуется на синтаксическую ошибку, то синтаксическая ошибка должна быть в другом запросе.
0

Попробуйте сделать это следующим образом:

$sql = <<EOL
INSERT INTO USERS (`FBID`, `FIRST_NAME`, `LAST_NAME`, `GENDER`) 
VALUES ('$fbid', '$firstName', '$lastName', '$gender')
EOL;
$stmt = mysql_query($sql) or die("MySQL error: " . mysql_error());

Это сохранит запрос для вас в $sql, чтобы вы могли повторить его в другом месте и посмотреть, что на самом деле было создано.

0

Включает ли какое-либо из ваших имен одинарные кавычки?

Попробуйте записать значение запроса в log/console/debug, чтобы убедиться в том, что вы ожидаете.

0

Попробуйте обернуть переменные в {}.

'{$fbid}', '{$firstName}', '{$lastName}', '{$gender}'

В противном случае вам придется использовать конкатенацию строк.   ' "$ Fbid." ', ' "$ ПгвЬЫат." ', '"...

Я предполагаю, что ваши переменные уже содержат надлежащие экранированные данные.

  • 0
    Он строит строку в двойных кавычках. Переменные будут просто отлично вписываться в это. Скобки нужны только в том случае, если у вас есть текст сразу после переменной, которая может быть перепутана с переменной $x = 1; $y = "$x23" не даст вам 123 , или если вам нужно получить доступ к дополнительным уровням многомерного массива в строке. $x[0][1] интерпретируется как $ x [0]. '[1]'.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню