Hansi: String in MySQL Datenbank speichern

Hallo,

ich habe ein String $daten wo folgendes drin steht:

<?php include('script/ansprechpartner/index.php'); ?>

Wenn ich $daten in die MySQL Datenbank schreibe kommt es zum Syntax Fehler. Ich weiß auch welcher Fehler vorliegt er mag das ' Zeichen nicht nur über phpmyadmin läßt es sich ohne Probleme in die Datenbank schreiben.

Wie stelle ich es nun an den String in meine Datenbank zu schreiben ohne das Fehler auftreten?

Und wenn ich dann später den String wieder auslese das er mir auch so wie er da oben steht ausgeben wird?

<?php include('script/ansprechpartner/index.php'); ?>

Danke für eure Hilfe!

Gruß Tom

  1. Halihallo Hansi

    Wenn ich $daten in die MySQL Datenbank schreibe kommt es zum Syntax Fehler. Ich weiß auch welcher Fehler vorliegt er mag das ' Zeichen nicht nur über phpmyadmin läßt es sich ohne Probleme in die Datenbank schreiben.

    http://www.php.net/mysql_escape_string

    Viele Grüsse

    Philipp

    1. Halihallo Hansi

      Wenn ich $daten in die MySQL Datenbank schreibe kommt es zum Syntax Fehler. Ich weiß auch welcher Fehler vorliegt er mag das ' Zeichen nicht nur über phpmyadmin läßt es sich ohne Probleme in die Datenbank schreiben.

      http://www.php.net/mysql_escape_string

      Hallo Philipp

      heißt das also man darf kein String in dieser Form in eine Datenbank abspeichern? Auch nicht über PHPmyAdmin

      Also bisher habe ich es mit PhPmYAdmin abespeichert und mit evel den String aus der Fatenbank ausgeführt hat alles ohne Fehler funktioniert.

      Heißt das also ich muß es für die Zukunft anders machen und den String für das reinschreiben in die Datenbank maskieren?

      Und wenn ich den String wieder auslese umparsen?

      Es wäre mir hilfreich wie ihr das in der Praxis löst, damit ich in Zukunft alte Fehler nicht wiederhole.

      Nur wäre das maskieren und zurück parsen im Script etwas mehr Aufwand was nicht wirklich schön ist :-(

      Gruß Hansi

      1. hi,

        http://www.php.net/mysql_escape_string

        heißt das also man darf kein String in dieser Form in eine Datenbank abspeichern?

        es _geht_ einfach nicht, weil die anführungszeichen _im_ string mit der mysql-syntax kollidieren.

        Auch nicht über PHPmyAdmin
        Also bisher habe ich es mit PhPmYAdmin abespeichert und mit evel den String aus der Fatenbank ausgeführt hat alles ohne Fehler funktioniert.

        klar - phpmyadmin führt im hintergrund natürlich ebenfalls mysql_escape_string (oder etwas analoges aus), bevor es die von dir im textfeld eingegebenen daten an die DB abschickt.

        Heißt das also ich muß es für die Zukunft anders machen und den String für das reinschreiben in die Datenbank maskieren?

        ja, das solltest du _immer_ machen.
        auch, um bei benutzereingaben zu verhindern, dass dir jemand weiteren sql-code unterjubeln kann, der dann z.b. daten löscht (sog. SQL code injection).

        Und wenn ich den String wieder auslese umparsen?
        Nur wäre das maskieren und zurück parsen im Script etwas mehr Aufwand was nicht wirklich schön ist :-(

        nein, nur beim eintragen in die DB maskieren.
        die DB erkennt diese maskierungen, und speichert die daten selsbt intern schon wieder unmaskiert ab.
        beim auslesen bekommst du also automatisch wieder deine unmaskierten daten, hier ist keine weitere behandlung erforderlich(*).

        gruss,
        wahsaga

        (*) ausser wenn magic_quotes_runtime aktiviert wäre, [linbk:http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime]