dedlfix: Absichern um es in die Datenbank zu schreiben

Beitrag lesen

Tach!

Ich möchte die Daten aus einem Formular in eine Datenbank schreiben. Diese sollen ja vorher überprüft werden auch Dinge die nicht in die Datenbank sollen.

Wenn du inhaltliche Dinge benennen und prüfen kannst, dann diese.

Daten in eine Datenbank zu schreiben, und dafür ein SQL-Statement zu verwenden ist aber völlig unabhängig davon. Die Daten müssen unabhängig von deren Herkunft und Püfung oder Prüfbarkeit auf korrekte Weise in das Statement eingefügt werden. Oder du nimmst alternativ Prepared Statements mit Platzhaltern und separater Datenübergabe, dann existiert das Problem gleich gar nicht.

$datensatz = "INSERT INTO adressen(
	vorname,
	nachname
	) VALUES 
	(
	'".mysqli_real_escape_string($_POST['vorname'])."',
	'".mysqli_real_escape_string($_POST['nachname'])."'
	)";

Das bekomme ich dann:

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given

Ja, siehe Handbuch. Die Funktion hätte gern als ersten Parameter die Verbindung übergeben.

Aber ich glaube auch das es nicht der richtige Ansatz ist.

Doch, schon. Aber es gibt mit den Prepared Statements einen besseren. Nimm dazu lieber PDO, das ist bedienerfreundlicher als mysqli.

Siehe http://php.net/manual/en/pdo.prepared-statements.php, Beispiele 1 bis 3. (Die Beispiele 4 bis 6 sind ein anderes Thema.)

dedlfix.