我試圖解決這個錯誤很長一段時間,也許我是盲目的,但我沒有看到有什麼問題。這個SQL查詢中的語法錯誤是什麼?
$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES (".$_POST['130225'].",".$_SERVER['REMOTE_ADDR'].");";
我試圖解決這個錯誤很長一段時間,也許我是盲目的,但我沒有看到有什麼問題。這個SQL查詢中的語法錯誤是什麼?
$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES (".$_POST['130225'].",".$_SERVER['REMOTE_ADDR'].");";
的IP
沒有用單引號(好像它是一個字符串)
$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES (".$_POST['130225'].",'".$_SERVER['REMOTE_ADDR']."');";
// ^ ^
作爲旁註,查詢是用SQL Injection
脆弱如果值(小號)的變量來自外部。請看下面的文章,瞭解如何防止它。通過使用PreparedStatements
你可以擺脫使用單引號圍繞值。
看起來你缺少幾個 「'」,其中你的價值觀是。
$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES ('".$_POST['130225']."','".$_SERVER['REMOTE_ADDR']."');";
如果將查詢粘貼到數據庫中,則更容易排查查詢。將會有一個有用的(有時候不是)錯誤消息。
我從你的查詢得到的錯誤是
#1054 - Unknown column 'text here' in 'field list'
谷歌這個錯誤,就會有關於如何解決它的提示。
這是更好地使用準備好的聲明,以避免類似的問題。像這樣,你不需要擔心報價。
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
查詢必須是這樣的:
$語句= $ mysqli->準備(「INSERT INTO 130225(票,IP)VALUES()?);
,然後綁定的參數:
$ stmt-> bind_param( 'SS',$ _POST [ '130225'],$ _ SERVER [ 'REMOTE_ADDR']);
等...
瓦時at的底層數據庫平臺? – 2013-02-26 15:27:33