2016-01-12 75 views
-3

我得到以下錯誤:這個mysql錯誤是什麼意思?

1064 You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use 
near 'AND `hackcount` >= 3' at line 1 SQL=SELECT COUNT(*) from 
`xxxxx_mi_iptable` WHERE ip = AND `hackcount` >= 3 

這是什麼意思?我應該怎麼做才能解決這個問題?

+0

請你把你的代碼(受影響的線路至少) –

+1

'其中IP =和'有知識產權沒有測試值,請檢查你如何構建字符串 –

+0

這是我複製的確切線。我只改變了表格前綴'xxxxx'。沒有提到知識產權。可能我在我的個人電腦中恢復了它,但沒有知識產權,我不知道。 :( – DarKMaSk

回答

3

有你WHERE第一個錯誤:

WHERE ip = AND `hackcount` >= 3 

ip等於什麼,到底是什麼?你忘了在那裏投入價值。

+0

這是我複製的確切的一行,我只改變了表格前綴'xxxxx',沒有提到IP,可能我在我的PC中恢復了它,沒有知識產權,我不知道。 ( – DarKMaSk

+0

@DarKMaSk:沒有一個回覆真的對我很有意義,但是代碼的問題很明顯,比較中沒有指定值,導致語法錯誤 – David

+0

好吧,現在如果我必須指定一個值,我該如何做到這一點/你可以請指導我的確切步驟? – DarKMaSk

0

看起來你使用的是Joomla插件「Marco的SQL注入」(http://www.mmleoni.net/sql-iniection-lfi-protection-plugin-for-joomla)。

它有嘗試檢測當前的客戶端

$remoteIP = $_SERVER['REMOTE_ADDR']; 

的IP,因爲REMOTE_ADDR並不總是存在/可靠/充分下面的SQL查詢

$sql = "SELECT COUNT(*) from `#__mi_iptable` WHERE ip = '{$remoteIP}' AND `hackcount` >= {$this->p_ipBlockCount}" ; 

失敗線。

插件應該使用類似這樣

if (isset($_SERVER['REMOTE_ADDR'])) 
{ 
$remoteIP = $_SERVER['REMOTE_ADDR']; 
} 
elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) 
{ 
$remoteIP = $_SERVER['HTTP_X_FORWARDED_FOR']; 
} 
elseif (isset($_SERVER['HTTP_CLIENT_IP'])) 
{ 
$remoteIP = $_SERVER['HTTP_CLIENT_IP']; 
}