Es ist 12:30 Uhr und ich habe für 9 Stunden gerade codiert. Ich muss dieses Projekt wirklich machen, aber MySQL ist mit meiner Deadline beschäftigt. Können Sie diesen Ausschnitt für mich untersuchen und sehen, ob Sie herausfinden können, was falsch ist?Was ist falsch an dieser MySQL Query?
PHP/MySQL Query
$q = $this->db->query("SELECT * FROM bans WHERE ip='".$ip."'");
die folgenden Fehler Hält Rückkehr ...
MYSQL Error [6. Oktober 2010 23.31 Uhr CDT]
Sie haben einen Fehler in Ihre SQL-Syntax; Sie in die Bedienungsanleitung zu Ihrer MySQL-Server-Version für die richtige Syntax entspricht in der Nähe zu verwenden ‚* FROM Verbote WHERE ip =‘ 206.53.90.231 ‚‘ in Zeile 1 (1064)
ich nichts falsch mit der sehen Abfrage. Ich habe sogar verschiedene Methoden ausprobiert, die Variable $ ip einzuschließen, aber ohne Erfolg.
EDIT:
Gerade hier hinzufügen in der ip Spalte in der Datenbank ist ein varchar (255).
EDIT 2:
Hier ist der ganze betroffene Code. Denken Sie daran, dass dies alles in einer Klasse ist. Wenn ich etwas verpasse, lass es mich wissen.
Linie von einer anderen Funktion
if($this->isBanned($_SERVER['REMOTE_ADDR'])===true) { return json_encode(array('error'=>'You are banned from this ShoutBox.')); }
Betroffene Funktion
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 Funktion
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); }
}
Versuchen Sie, '$ ip' direkt vor der Abfrage zu drucken – codaddict
Seltsam, auch wenn Sie es mit' mysql_real_escape_string() 'in Ihrer Datenbank-Klasse entkommen, die die IP-Zeichenfolge nicht beeinträchtigen sollte, über die Ihr Fehler spricht ... – BoltClock
Die Abfrage sieht korrekt aus, vorausgesetzt, es sind keine ungeraden, nicht druckbaren Zeichen vorhanden. Der Fehler, den es sieht, ist am '*'. Ich nehme an, die Zeichenfolge ist alles ASCII, nicht UTF-8? – cHao