现在是上午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服务器版本对应的手册,以便在第1行(1064)附近的'* FROM禁止WHERE ip ='206.53.90.231'附近使用正确的语法
我没有看到查询有任何问题。我甚至尝试了不同的方法来包含变量 $ 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); }
}
答案 0 :(得分:7)
我认为它可能是这是导致错误的DELETE
语句。
删除*
之后的DELETE
,它应该没问题。
答案 1 :(得分:0)
试试这个:
$q = $this->db->query('SELECT * FROM bans WHERE ip="' . $ip . '"');
答案 2 :(得分:0)
检查您是否使用'字符或'字符(最后一个是重音)