我必须在这里找到一些小东西,但在我的生命中找不到它。
$insert = mysql_query("INSERT INTO USERS
(`FBID`, `FIRST_NAME`, `LAST_NAME`, `GENDER`)
VALUES ('$fbid', '$firstName', '$lastName', '$gender')");
错误是:
错误:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行的“1”附近使用正确的语法
有什么想法吗?
答案 0 :(得分: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)."'
)");
如果变量包含任何引号,如果您没有正确地转义它们,则会产生问题。
答案 1 :(得分:0)
您的任何名字都包含单引号吗?
尝试将查询的值写入log / console / debug,以确保它符合您的期望。
答案 2 :(得分:0)
尝试将变量包装在{}。
中'{$fbid}', '{$firstName}', '{$lastName}', '{$gender}'
否则您将不得不使用字符串连接。 ' “$ FBID”。', ' “$的firstName。”','” ...
我假设您的变量已包含正确的转义数据。
答案 3 :(得分: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
中为您保留查询,以便您可以在其他地方回显并查看实际生成的内容。