gegenfunktion zu mysql_real_escape_string()
Hans
- php
Hi!
Wenn ich einen string mit mysql_real_escape_string() in die mysql-tabelle speichere, gibt es dann eine "Gegenfunktion", mit dessen ich dann den richtigen string wieder ausgeben kann, oder muss ich das mit str_replace lösen?
$search = array("'", '"', "\");
$replace = array("'", '"', "");
echo str_replace($search , $replace , $row->text);
Stimmt das so?
thx
Hans
Hello,
Wenn ich einen string mit mysql_real_escape_string() in die mysql-tabelle speichere, gibt es dann eine "Gegenfunktion", mit dessen ich dann den richtigen string wieder ausgeben kann, oder muss ich das mit str_replace lösen?
Nein, den muss es nicht geben.
Du speicherst nämlich nicht den umgewandelten String in der SQL-Datenbank, sondern übergibst diesen nur an die Textschnittstelle der Datenbank. Diese macht aus dem Gemisch von Daten, Steuerzeichen und SQL-Befehlen wieder Daten, Steuerzeichen (Operatoren) und SQL-Befehle.
Die Daten werden also aus dem vorhandelten String in der textschnittstelle wieder sauber extrahiert und an die DB übergeben.
Wenn DU sie dann nachher mit einem Select wieder herausholst, sind sie schon wieder "zurückgewandelt"
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hi,
Wenn ich einen string mit mysql_real_escape_string() in die mysql-tabelle speichere, gibt es dann eine "Gegenfunktion", mit dessen ich dann den richtigen string wieder ausgeben kann,
eine solche Funktion hätte nicht den geringsten Sinn, da die Daten bereits beim Auslesen aus der Datenbank dekodiert werden.
oder muss ich das mit str_replace lösen?
Es gibt kein Problem, das gelöst werden müsste.
Cheatah
Hello Cheatah,
eine solche Funktion hätte nicht den geringsten Sinn, da die Daten bereits beim Auslesen aus der Datenbank dekodiert werden.
Deine Aussage ist jetzt aber irreführend, denn nach der Codierung hat der OP gar nicht gefragt.
Er fragt nach der Maskierung der Daten. Die wird aber bereits VOR dem Eintrag in die Datenbank in der Schnittstelle wieder entfernt. Da in der DB dann also unmaskierte Daten stehen, müssen sie auch beim oder nach dem Auslesen gar nicht mehr demaskiert werden.
Decodiert werden müssen sie aber ggf.. Das hängt ganz davon ab, wie die DB mit z.B. utf-8 oder anderen Codierungen umgeht. Aber auch dies sollte ein vernünftiges DBMS ganz alleine regeln.
:-)
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
echo $begrüßung;
Wenn ich einen string mit mysql_real_escape_string() in die mysql-tabelle speichere, gibt es dann eine "Gegenfunktion", mit dessen ich dann den richtigen string wieder ausgeben kann,
oder muss ich das mit str_replace lösen?
Es gibt kein Problem, das gelöst werden müsste.
Theoretisch hast du Recht. Praktisch kann es ein Problem geben, wenn das Feature Magic Quotes dazwischenfunkt und eine doppelte Maskierung vorliegt. In dem Falle sollte man sich aber um die Deaktivierung der Magic Quotes kümmern.
echo "$verabschiedung $name";
Hi,
Praktisch kann es ein Problem geben, wenn das Feature Magic Quotes dazwischenfunkt
Von moronic quotes war doch gar nicht die Rede, es ging um das Gegenstück zu mysql_real_escape_string, nicht um blödsinnige PHP-"features".
cu,
Andreas
echo $begrüßung;
Praktisch kann es ein Problem geben, wenn das Feature Magic Quotes dazwischenfunkt
Von moronic quotes war doch gar nicht die Rede, es ging um das Gegenstück zu mysql_real_escape_string, nicht um blödsinnige PHP-"features".
Ja, das ist mir durchaus bewusst. Der Ursache für das OP kann aber meiner Erfahrung nach sein, dass Hans theoretische Überlegungen anstellt oder aber beim Auslesen Maskierungen drin hat. Und die Wahrscheinlichkeit, dass Letzteres durch die MQ hervorgerufen wird ist dann doch ziemlich hoch.
echo "$verabschiedung $name";