现在是凌晨12:30,我已经连续编码了9个小时。我真的需要完成这个项目,但MySQL正在影响我的截止日期。你能帮我检查一下这段代码片段,看看是否能找出问题吗?
PHP/MySQL 查询
$q = $this->db->query("SELECT * FROM bans WHERE ip='".$ip."'");
不断返回以下错误...
MYSQL错误[2010年10月6日晚上11:31 CDT] 您的SQL语法有误,请检查与您的MySQL服务器版本相对应的手册,以获取正确的语法使用方式。附近的语法是:'* FROM bans WHERE ip='206.53.90.231'',在第1行(1064)
我没有看到查询有什么问题。我甚至尝试了不同的方法来包含变量$ip,但都没有成功。
编辑: 只是补充一下,在我的数据库中,ip列是varchar(255)类型。
编辑2: 这是整个受影响的代码。请记住,这全部都在一个类中。如果我漏掉了什么,请让我知道。
另一个函数中的行
if($this->isBanned($_SERVER['REMOTE_ADDR'])===true) { return json_encode(array('error'=>'You are banned from this ShoutBox.')); }
受影响的功能
function isBanned($ip) {
$q = $this->db->query("SELECT * FROM bans WHERE ip='".$ip."'"); $num = $this->db->affected_rows;
if($num>0) { $row = $this->db->fetch_array($q); if(($row['expires'] < time()) && ($row['expires'] !== 0)) { $this->unbanUser($ip,'internal'); return false; } return true; } return false;
}
unbanUser函数
function unbanUser($ip,$t='box') {
$q = $this->db->query("SELECT * FROM bans WHERE ip='".$ip."'"); $num = $this->db->affected_rows; if($num>0) { $q = $this->db->query("DELETE * FROM bans WHERE ip='".$ip."'");
return (($t=='box') ? json_encode(array('status'=>'removed')) : true); } else { return (($t=='box') ? json_encode(array('error'=>'Unable to locate the user.')) : true); }
}
$ip
。 - codaddictmysql_real_escape_string()
转义了它,也不应该影响错误信息中所提到的IP字符串... - BoltClock