Hans: gegenfunktion zu mysql_real_escape_string()

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

  1. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

  2. 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

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. 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

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau

    2. 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";

      1. 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

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. 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";