2013-04-15 25 views
-4

我有一個錯誤與我的INSERT INTO線,它是關於這個壞小子INSERT INTO不能充當應該

mysql_query("INSERT INTO accounts('username', 'password', 'firstname', 'lastname', 'email') 
VALUES($username, $password, $firstname, $lastname, $email)") 
or die("Could not create account! <br/>" . mysql_error()); 

我與提供的錯誤是:

無法創建帳戶!
您的SQL語法有錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以在''用戶名','密碼','名','姓','電子郵件'附近使用正確的語法)第1行的VALUES(測試,測試)

我懷疑它做的變量沒有被正確稱爲

+6

請仔細閱讀其他關於此問題的其他37489379個問題的答案。 – moonwave99

+0

您需要用單引號引用您要添加的值。 ''用戶名'''等等。儘管你可能也想看看使用PDO並將其作爲準備好的語句,因爲它更容易編寫,而且更安全。 – andrewsi

+0

您不會像'accounts(...)'後面那樣引用列名稱 – Justin

回答

5

有各種各樣的問題,所以我會總結一下他們:

  • INSERT INTO t1 ('col' - 注意'col'是用引號括起來,這意味着它試圖插入字符串文字「col1」而不是列名引號並用反引號替換它們(或者什麼都不是)
  • 這些值本身不包含在引號中。你有VALUES(test - 這在語義上意味着插入列「test」的值,這是沒有意義的。你實際上需要用引號包裝這個。
  • 我想冒險猜測沒有輸入參數正確逃脫。您應該使用PDO或mysqli正確使用參數化查詢。
+0

我正在輸入一個答案,但你擊敗了我。 OP的主要問題是報價錯誤。解決方法是忘記「mysql_query()」,而是使用PDO或[mysqli]和準備好的語句。 – paulsm4

0

我的朋友querys中的字段不應被引用。試試這個:

mysql_query("INSERT INTO accounts (username, password, firstname, lastname, email) VALUES($username, $password, $firstname, $lastname, $email)") or die("Could not create account!" . mysql_error()); 

好運

1

你不必在查詢中使用引號'但反引號`

mysql_query("INSERT INTO `accounts` (`username`, `password`, `firstname`, `lastname`, `email`) VALUES('".$username."', '".$password."','". $firstname."', '".$lastname."', '".$email."')") or die("Could not create account! " . mysql_error()) 

insert into documentation

我想也記你mysql_功能已棄用,所以我建議你切換到mysqliPDO爲n新項目。

0

不建議使用mysql_query,很快就會被棄用。可能最好使用PDO或mysqli代替。 http://php.net/manual/en/function.mysql-query.php

但是,要回答你的問題,我相信這是因爲你的列名在單引號(而不是反引號)。

這是你的需要在單引號內。您可能也想在這些變量上運行mysql_real_escape_string,以防止SQL注入。或者只是使用PDO準備的語句。 http://php.net/manual/en/pdo.prepared-statements.php