Ich habe mir, nachdem ich schon einige Male auf Fehler mit Datenbankabfragestrings hereingefallen bin, folgende Regeln verinnerlicht und wende diese konsequent an:
- Den Datenbankstring mache ich mit einfachen Hochkomma.
- Variablen schließe ich in den String mit Punkten ein.
- Datenbankvariablen schreibe ich klein; Datenbankbefehle groß
- Bei Variablen, die Strings beinhalten, müssen die Hochkommata maskiert werden.
- Die Datenbankstrings schreibe ich in mehrere Zeilen.
Das ergibt im obigen Beispiel folgenen String:
Der erste Backslash nach Username maskiert das darauf folgende Hochkomma. Das Hochkomma danach schließt den String und erlaubt das Anschließen der Variablen mit dem Punkt. Nach dem nächsten Punkt geht es umgekehrt: das erste Hochkomma öffnet den String, dann kommt das maskierte Hochkomma, usw.
Um zu testen, ob alles richtig ist, gibt man den String mit echo aus, kopiert ihn in das SQL-Textfeld von PhpMyAdmin und startet ihn. Dort erhält man dann die richtigen Fehlermeldungen.
Ich hoffe, das war jetzt nicht Oberlehrerhaft...
- Den Datenbankstring mache ich mit einfachen Hochkomma.
- Variablen schließe ich in den String mit Punkten ein.
- Datenbankvariablen schreibe ich klein; Datenbankbefehle groß
- Bei Variablen, die Strings beinhalten, müssen die Hochkommata maskiert werden.
- Die Datenbankstrings schreibe ich in mehrere Zeilen.
Das ergibt im obigen Beispiel folgenen String:
PHP:
$sql = 'SELECT id, username, email
FROM para_user
WHERE username = \''.$_REQUEST[user]'\'
AND passwort = \''.md5($_REQUEST[pwd].'\'';
Um zu testen, ob alles richtig ist, gibt man den String mit echo aus, kopiert ihn in das SQL-Textfeld von PhpMyAdmin und startet ihn. Dort erhält man dann die richtigen Fehlermeldungen.
Ich hoffe, das war jetzt nicht Oberlehrerhaft...