Hallo Sven,
vielen Dank für deine Hilfe und gute erklärung.
Diese Information ist böse, falsch und gefährlich! Mach das nie!
Leider findet man sogar im original php.net manual diese Infos so:
http://nl3.php.net/addslashes
An example use of addslashes() is when you're entering data into a database. For example, to insert the name O'reilly into a database, you will need to escape it. Most databases do this with a \ which would mean O'reilly. This would only be to get the data into the database, the extra \ will not be inserted. Having the PHP directive magic_quotes_sybase set to on will mean ' is instead escaped with another '.
Mit Prepared Statements ist diese Diskussion allerdings überflüssig, da das Escaping nur dazu dienen soll, den Datenteil korrekt vom SQL-Programmteil zu trennen, wenn man sich sein SQL-Statement zusammenmischt. Bei Prepared Statements geschieht die Trennung automatisch dadurch, dass im SQL-Teil nur Platzhalter angegeben und die Daten über einen separaten Kanal hinzugefügt werden.
Das bedeutet also wenn ich folgendes mache:
$dbSelectFromUser = $DBO->prepare("SELECT userid FROM usertab WHERE usr = :user");
$dbSelectFromUser->bindParam(':user', $USER);
$dbSelectFromUser->execute();
dann kann nichts passieren?
Auch wenn $USER eine POST Variable wäre oder aus einem Textfeld kommen würde?
vielen Dank und viele Grüße
hawk