MySQL Insert синтаксическая ошибка - не могу найти его! - PullRequest
0 голосов
/ 02 сентября 2010

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

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

Ошибка:

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

Есть идеи?

Ответы [ 4 ]

2 голосов
/ 02 сентября 2010

Переменные не экранированы правильно.Используйте 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 голосов
/ 02 сентября 2010

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

$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 голосов
/ 02 сентября 2010

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

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

В противном случае вам придется использовать конкатенацию строк.'". $ fbid."', '". $ firstName."', '"...

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

0 голосов
/ 02 сентября 2010

Есть ли в ваших именах одинарные кавычки?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...