Hallo,
Moin!
ich hab mir hier eine Funktion gebastelt
function _db_insert($tabelle, $spalte, $wert){
Kleine Frage nebenbei: Warum beginnt der Name der Funktion mit einem Unterstrich? AFAIK ist so etwas doch eigentlich PHP intern vorbehalten.
wenn ich mir da $sql ausgeben lasse, kommt soetwas bei raus:
»»
INSERT INTO user (_username_r, _username, _password, _email, _reg_email, _reg_date, _last_login, _rang, _fehlversuche, _fehlversuchzeit) VALUES ('kay'"aad','kay'"aad','200820e3227cf69c1756a6b531e7e0d2','kay@xxx.de','kay@xxx.de','1090147928','1090147928','user','0','1090147928')
»»
Sieht gut aus, alle "gefährlichen" Zeichen escaped, selbst Zahlen in Hochkomma, sehr schön.
wenn ich dann in phpMyAdmin schaue, wurde der Nick so eingetragen
kay'"aad statt so kay'"aad
Ist klar, weil phpMyAdmin bei der Ausgabe automatisch die Backslashes entfernt. Mit 'kay'"add' sorgst du ja nur dafür, dass MySQL wirklich kay'"add in die Datenbank einträgt, statt nach kay\ einen Syntaxfehler (den nächsten Backslash) zu melden. Also: In der Datenbank steht, was auch die Ausgabe zeigt, in der Tat kay'"add. Willst du hingegen selbst die Backslashes auch dort _in der Datenbank_ stehen haben, musst diese natürlich ebenfalls escapen. Im Gegensatz zu PHP, Perl, ... unterscheidet SQL nicht bei den Quotes, ob Backslashes aufgelöst werden oder nicht.
Kay
Gruß, Robert