Harry: Daten speichern

Hi,

wie geht Ihr eigentlich mit Daten um, die Ihr speichern wollt?

Mal ein Beispiel:
insert into TABELLE values ('$daten')

Ich muß die "'" hier setzen, da ich nicht weiß, was in $daten enthalten ist.
(Man stelle sich vor, $daten wäre 'rudi geht essen'. Da ist den sql-Befehl in einer Variablen $sql speichere, würde das zu Fehlern führen.)

Allerdings gibt es zwei Problemfälle nämlich das "'" und den "".
Also, wenn $data = abc'
wäre mein $sql = .......('abc'')
->geht nicht
Wenn mein $data = abc\ ist,
wäre $sql = ......('abc')
->geht auch nicht.

Ich habe mir dafür eine Lösung erdacht, die geht:
ich baue ""->"\" und "'"->"'"
Aber wenn ich z.B. ein binärfile habe, müßte ich das nach dem Auslesen umgekehrt wieder machen.
Gibt es was eleganteres, sehe ich das zu kompliziert?

Danke!

  1. Tach

    Mal ein Beispiel:
    insert into TABELLE values ('$daten')

    Ich muß die "'" hier setzen, da ich nicht weiß, was in $daten enthalten ist.

    Also, ums kurz zu machen, wenn Du PHP verwendest, dann heißt die Lösung für Dein Problem addslashes (http://www.php.net/manual/en/function.addslashes.php) oder mysql_escape_string (http://www.php.net/manual/en/function.mysql-escape-string.php).

    Ciao,

    Harry

    1. Tach

      Mal ein Beispiel:
      insert into TABELLE values ('$daten')

      Ich muß die "'" hier setzen, da ich nicht weiß, was in $daten enthalten ist.

      Also, ums kurz zu machen, wenn Du PHP verwendest, dann heißt die Lösung für Dein Problem addslashes (http://www.php.net/manual/en/function.addslashes.php) oder mysql_escape_string (http://www.php.net/manual/en/function.mysql-escape-string.php).

      Nee, benutze Perl.
      Habe mir so eine Funktion selbst gebaut.
      Aber meine Frage war, ob man es generell einfacher handhaben könnte?

      Dennoch danke!

      1. Hi,

        Aber meine Frage war, ob man es generell einfacher handhaben könnte?

        je nach DBMS. MySQL beispielsweise unterstützt (AFAIK - wie ist es aktuell?) keine Bind-Variablen, viele andere DBMS jedoch schon. Damit ist das Problem trivial und sogar performanceverbessernd zu umgehen.

        Cheatah

        1. Hi,

          Aber meine Frage war, ob man es generell einfacher handhaben könnte?

          je nach DBMS. MySQL beispielsweise unterstützt (AFAIK - wie ist es aktuell?) keine Bind-Variablen, viele andere DBMS jedoch schon. Damit ist das Problem trivial und sogar performanceverbessernd zu umgehen.

          verstehe jetzt nicht ganz, aber ich habe MySQL (alte Version, 3er).
          Also muß ich das so machen, wie ich es beschrieben habe, oder?

          1. Hi,

            verstehe jetzt nicht ganz,

            Du meinst, Du weißt nicht, was Bind-Variablen sind, richtig? ;-)

            aber ich habe MySQL (alte Version, 3er).

            Da gibt's die nicht. Man korrigiere mich bitte, wenn ich mich irre.

            Also muß ich das so machen, wie ich es beschrieben habe, oder?

            Jau. Es sei denn Du findest ein Modul, dass "so tut", als würde MySQL mit Bind-Variablen umgehen können, und es intern korrigieren.

            Cheatah