Son las 12:30 a.m. y he estado codificando durante 9 horas seguidas. Realmente necesito terminar este proyecto, pero MySQL está jugando con mi fecha límite. ¿Podrías examinar este fragmento para mí y ver si puedes descubrir qué está mal?¿Qué hay de malo con esta consulta de MySQL?
PHP/MySQL Query
$q = $this->db->query("SELECT * FROM bans WHERE ip='".$ip."'");
sigue volviendo el siguiente error ...
MYSQL Error [OCT sexto, 2010 23:31 CDT]
Usted tiene un error en su sintaxis SQL; compruebe el manual que corresponde a su versión del servidor MySQL para el sintaxis derecho al uso cerca de '* de prohibiciones DONDE IP = 206.53.90.231' '' en la línea 1 (1064)
No veo nada malo con el consulta. Incluso probé diferentes métodos para incluir la variable $ ip, pero no sirvió para nada.
EDIT:
sólo para añadir aquí, la columna de la ip en mi base de datos es un varchar (255).
EDIT 2:
Aquí está todo el código afectado. Tenga en cuenta que esto es todo en una clase. Si me falta algo, házmelo saber.
Línea de otra función
if($this->isBanned($_SERVER['REMOTE_ADDR'])===true) { return json_encode(array('error'=>'You are banned from this ShoutBox.')); }
afectado Función
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;
}
función 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); }
}
Intente imprimir '$ ip' justo antes de la consulta – codaddict
extraño, incluso si se le escapó que con' mysql_real_escape_string() 'en la clase de base de datos que no debería afectar a la cadena de IP de su error está hablando de ... La – BoltClock
la consulta se ve correcta, suponiendo que no hay caracteres extraños que no sean de impresión. El error que está viendo está en el '*'. Supongo que la cadena es todo ASCII, no UTF-8? – cHao