2012-04-11 12 views
2

Ich habe gerade deaktiviert magic_quotes_gpc und ich stelle fest, dass die Benutzereingabe in meine Datenbank Apostrophe hat, als ob nichts entkommen wäre.Ist das normales Verhalten für mysql_real_escape_string?

($_POST['message'])="it's a test"; 
$string = mysql_real_escape_string(htmlentities($_POST['message'])); 

Dann füge ich es in die Datenbank und die Datenbank zeigt: it's a test

Ist es eigentlich nicht it\'s a test sein, nachdem ich mysql_real_escape_string angewendet? Oder ist es die Datenbank (hier mit PHPMyAdmin), die diese \' in ' übersetzt? Vielen Dank im Voraus.

+0

@deceze: er sagte, Datenbank mit phpMyAdmin. Er hat Recht. – itachi

+0

Sorry, muss das falsch gelesen haben. – deceze

Antwort

3

Der Zweck des Entweichen von SQL ist SQL-Injection zu vermeiden. INSERT INTO table VALUES ('it's a test') .. würde Sie Probleme verursachen, aber wenn Sie es entkommen, wird es zu INSERT INTO table VALUES ('it\'s a test') .. und das wird funktionieren und fügen Sie "'es ist ein Test'" in Ihre Datenbank.

+0

Hallo, danke für deine Antwort. Ich brauchte nur eine Bestätigung, weil ich diese Backslashes in meiner Datenbank mit diesen gefürchteten magic_quotes gesehen hatte. Grüße – eric01

1

mysql_real_escape_string() entkommt nur Zeichen, um sie korrekt in DB zu setzen. Sie würden also in Ihrer DB keine Backslashes sehen.

Aufgrund mysql Doc (http://dev.mysql.com/doc/refman/5.1/en/string-literals.html#character-escape-sequences):

That is, the escaped character is interpreted as if it was not escaped. For example, “\x” is just “x”. 
+0

Hallo, vielen Dank für Ihren Link. Ich habe tatsächlich auf php.net nachgeschaut, konnte diese Bestätigung aber nicht finden. Danke – eric01

+0

du bist willkommen –

0

Wenn INSERT INTO atable VALUES ('it\'s a test') Abfrage ausführen

Nur "it's a test" Geschäft in Ihrer Datenbank :)

+0

Hallo danke für deine Antwort. Aber wenn ich diese Zeichenfolge aus der Datenbank AUSWÄHLEN und anzeigen möchte, ist es normal, dass sie als "es ist ein Test" angezeigt wird? Vielen Dank – eric01

Verwandte Themen