EKKi: Kontextwechsel - Sichere queries in SQLite3

Beitrag lesen

Mahlzeit shordy,

Was meinst Du? Die Info, die ich dann noch gebraucht habe war, dass die '' nicht in die Datenbank eingehen, sondern nur ein einfaches '. Darauf hat mich Vincent Mai hingewiesen. Im Artikel "Kontextwechsel" steht dazu nix.

Das ist nicht korrekt. Ich zitiere (Abschnitt "Programmcode und Daten", drittes Beispiel):

-----8<-----

$text = "Der Computer sagte: \"Meine Batterie ist alle.\" Dann schaltete er sich selbst aus.";

Der Backslash maskiert das zweite Anführungszeichen. Es wird nun nicht mehr als Stringbegrenzer angesehen. [...] Maskierungen (englisch Escaping) sind nur für die richtige Interpretation von Zeichen beim Lesen eines Dokuments oder Datenstroms notwendig. Die interne Verarbeitung wird meistens mit den Rohdaten stattfinden, denn Maskierzeichen sind meist auch nur normale Zeichen und dürfen bei der Stringverarbeitung (zum Beispiel Zeichen zählen) nicht berücksichtigt werden. Die Maskierzeichen werden beim Lesevorgang entfernt. Im Speicher steht der Wert also wieder als:

Der Computer sagte: "Meine Batterie ist alle." Dann schaltete er sich selbst aus.

----->8-----

Ich wüsste nicht, was daran missverständlich ist: die Maskierung sorgt lediglich dafür, dass die Daten richtig interpretiert und gespeichert werden - in den gespeicherten Daten sind die Maskierungszeichen nicht vorhanden.

Jetzt wieder ein bisschen Transferleistung:

Wenn die *Maskierung* von einfachen Anführungszeichen (') in SQLite durch verdoppeln derselben geschieht - wieviele Anführungszeichen werden dann wohl in die Datenbank geschrieben?

[ ] Keins, da sich die Zeichen gegenseitig aufheben.

[ ] Eins, da das andere Anführungszeichen lediglich der Maskierung dient.

[ ] Beide, da alles so gespeichert wird wie es in der Zeichenkette steht.

MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|