Sven Rautenberg: einfaches Häckchen ' in die DB bekommen

Beitrag lesen

Moin!

Also bei mir funktioniert

INSERT INTO TB_Test VALUES ('Der war's');

wunderbar (MySQL 3.23.49)

und sowohl mit MySQL und Access

INSERT INTO TB_Test VALUES ("Der war's");

Merke: Nicht alle SQL-Datenbankmanagementsysteme setzen auf die gleiche SQL-Syntax

Wenn Du aber auf beliebige Datenbanken von der gleichen Anwendung und mit verschiedenen Daten zugreifen willst, die Java dir zusammensetzt, dann muss Java auch den entsprechenden String für das Zielsystem zusammensetzen

Eigentlich alle Schnittstellen zu allen Datenbanken bieten eine Funktion an, der man den uncodierten String übergibt, und die alle für die Datenbank schädlichen Sonderzeichen maskiert. Im Falle von PHP mit MySQL wäre das mysql_escape_string(), es gibt in PHP aber für alle ansprechbaren DBMS solche Funktionen. Hierbei wird die Eigenart jeder einzelnen Datenbank berücksichtigt. Es ist z.B. nicht so, dass der Backslash immer ein gültiges Escape-Zeichen für jede Datenbank ist.

Das Problem ist dann nur, dass in PHP alle Usereingaben standardmäßig Escape-Zeichen enthalten. Die muß man zuerst mal entfernen - aber eben nur, wenn die Option magic_quotes_gpc eingeschaltet ist.

- Sven Rautenberg

--
Diese Signatur gilt nur am Freitag.