Там должно быть что-то маленькое, я здесь не хватает, но я не могу найти его для жизни.
$insert = mysql_query("INSERT INTO USERS
(`FBID`, `FIRST_NAME`, `LAST_NAME`, `GENDER`)
VALUES ('$fbid', '$firstName', '$lastName', '$gender')");
Ошибка:
Ошибка: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с "1" в строке 1
Любые идеи?
У вас нет правильных экранов переменных. Используйте 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)."'
)");
Если переменные содержат какие-либо кавычки, они создают проблему, если вы их не избегаете.
Попробуйте сделать это следующим образом:
$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
, чтобы вы могли повторить его в другом месте и посмотреть, что на самом деле было создано.
Включает ли какое-либо из ваших имен одинарные кавычки?
Попробуйте записать значение запроса в log/console/debug, чтобы убедиться в том, что вы ожидаете.
Попробуйте обернуть переменные в {}.
'{$fbid}', '{$firstName}', '{$lastName}', '{$gender}'
В противном случае вам придется использовать конкатенацию строк. ' "$ Fbid." ', ' "$ ПгвЬЫат." ', '"...
Я предполагаю, что ваши переменные уже содержат надлежащие экранированные данные.
$x = 1; $y = "$x23"
не даст вам 123
, или если вам нужно получить доступ к дополнительным уровням многомерного массива в строке. $x[0][1]
интерпретируется как $ x [0]. '[1]'.
mysql_query
.'
) и обратные кавычки (`) в операторе SQL?