2013-02-26 43 views
1

我試圖解決這個錯誤很長一段時間,也許我是盲目的,但我沒有看到有什麼問題。這個SQL查詢中的語法錯誤是什麼?

$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES (".$_POST['130225'].",".$_SERVER['REMOTE_ADDR'].");"; 
+2

瓦時at的底層數據庫平臺? – 2013-02-26 15:27:33

回答

6

IP沒有用單引號(好像它是一個字符串

$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES (".$_POST['130225'].",'".$_SERVER['REMOTE_ADDR']."');"; 
//                  ^      ^

作爲旁註,查詢是用SQL Injection脆弱如果值(小號)的變量來自外部。請看下面的文章,瞭解如何防止它。通過使用PreparedStatements你可以擺脫使用單引號圍繞值。

1

看起來你缺少幾個 「'」,其中你的價值觀是。

$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES ('".$_POST['130225']."','".$_SERVER['REMOTE_ADDR']."');"; 

如果將查詢粘貼到數據庫中,則更容易排查查詢。將會有一個有用的(有時候不是)錯誤消息。

我從你的查詢得到的錯誤是

#1054 - Unknown column 'text here' in 'field list' 

谷歌這個錯誤,就會有關於如何解決它的提示。

0

這是更好地使用準備好的聲明,以避免類似的問題。像這樣,你不需要擔心報價。

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world'); 

查詢必須是這樣的:

$語句= $ mysqli->準備(「INSERT INTO 130225(票,IP)VALUES()?);

,然後綁定的參數:

$ stmt-> bind_param( 'SS',$ _POST [ '130225'],$ _ SERVER [ 'REMOTE_ADDR']);

等...