簡體   English   中英

MySQL插入語法錯誤-無法找到它!

[英]MySQL Insert syntax error - Cant find it!

我總會在這里想念一些小東西,但我終生找不到。

$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)."'
          )");

如果變量包含任何引號,那么如果您沒有正確地對它們進行轉義,它們就會產生問題。

您的名字中是否有單引號?

嘗試將查詢的值寫到log / console / debug中,以確保它符合您的期望。

嘗試將變量包裝在{}中。

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

否則,您將不得不使用字符串連接。 ' “$ FBID。”' ' “$您的名字。”',“” ...

我假設您的變量已經包含正確的轉義數據。

嘗試這樣做:

$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為您保留查詢,以便您可以在其他地方回顯該查詢並查看實際生成的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM