2016-01-12 137 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']; 
}