MySQL插入语法错误 - 无法找到它!

时间:2010-09-02 16:52:25

标签: php mysql insert

我必须在这里找到一些小东西,但在我的生命中找不到它。

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

错误是:

  

错误:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行的“1”附近使用正确的语法

有什么想法吗?

4 个答案:

答案 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中为您保留查询,以便您可以在其他地方回显并查看实际生成的内容。