这个MySQL查询有什么问题?

时间:2010-10-07 04:38:17

标签: php mysql database mysql-error-1064

现在是上午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); }
}

3 个答案:

答案 0 :(得分:7)

我认为它可能是这是导致错误的DELETE语句。

删除*之后的DELETE,它应该没问题。

答案 1 :(得分:0)

试试这个:

$q = $this->db->query('SELECT * FROM bans WHERE ip="' . $ip . '"');

答案 2 :(得分:0)

检查您是否使用'字符或'字符(最后一个是重音)