Apostroph filtern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Apostroph filtern

    Moin und so,

    folgendes Problem: es sei ein String gegeben, der als SQL-Statement an die mySQL-DB weitergereicht werden soll und der Apostrophe enthält, z.B. so einer wie dieser hier:

    (1) insert into tabelle (zeichenkette) values ('irgendein'text')

    addslashes() hilft nicht weiter, weil damit folgendes entsteht:

    (2) insert into tabelle (zeichenkette) values (\'irgendein\'text\')

    und das ist nicht Sinn der Sache, weil ich nur diejenigen Apostrophe escapen will, die dafür auch sinnvoll sind; entstehen soll also

    (3) insert into tabelle (zeichenkette) values ('irgendein\'text')

    Mit anderen Worten: wie realisiere ich eine intelligente Query-Funktion, die
    (1) als Parameter bekommt und (3) an die Datenbank übergibt?

    (in den Codeschnipseln und über die Suche hab' ich leider nichts finden können)

    Danke für jede Hilfe
    Mattjosh

  • #2
    gegenfrage ....

    wo kommt irgendein'text her?

    beim einfügen des o.g. string in deine query gehört schon die addslashes() rein.

    damit hast du dein problem gar nicht erst.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      denke mal, dass der komplette string eingegeben wird.

      Kommentar


      • #4
        Es ist gerade die Idee, nicht zu reglementieren, daß der Eingabestring bereits mit addslashes() oder sonstwie vorbehandelt wurde, sondern so, daß man ein wegen des ' syntaktisch nicht korrektes SQL-Statement vorliegen hat und eine Funktion daraus eben das Problem mit dem Apostroph selbst löst. Diese Funktion suche ich.

        Um es konkret festzuhalten: die Daten können von überall kommen - Textdatei, Formulareingabe, andere Tabelle, Socket, ...; ich will mich da auch gar nicht festlegen. Ich will den "Luxus" schaffen, daß der Prozeß, der die Daten liest, nicht an addslashes() denken muß, sondern eine Funktion schreiben, die das selbst in die Hand nimmt und die man aus diesem Grund auch prima in einer Bibliothek unterbringen kann, die sich mehrfach wiederverwenden läßt.

        Ich bin auch sicher, daß es einen Weg gibt, so eine Funktion zu schreiben, nur komm' ich im Moment einfach nicht drauf...

        Mattjosh

        Kommentar


        • #5
          Alles in den Klammern nach 'values' REGEXEN und trimmen
          Dann ein Array bauen (die Werte sollten ja durch 'Komma' getrennt sein)
          Array durchlaufen, die einzelnen Values trimmen und auf einfache/doppelte Anführungsstriche am Anfang und am Ende prüfen.
          Wenn vorhanden, den Rest escapen und wieder in die verwendeten Quotes setzen.
          Querystring neu zusammenbauen.
          fertig

          Viel Spass beim Coden
          Konrad

          In a world without walls and fences, who needs Windows and Gates ?
          (Sun Microsystems)

          Kommentar

          Lädt...
          X