Checkboxen in Mysql speichern

Dann hast du dein Problem mit den Anführungsstrichen nicht mehr ;-)
Deine Variante ist aber - wie ich finde - nicht gerade besonders gut lesbar.

Was jedoch alle die hier geannten Queries gemeinsam haben ist der nicht vorhandene Schutz gegen Injections. Wenn jemand zum Beispiel ein Single Quote (Hochkomma) eingibt, kann der Query nicht ausgeführt werden. Mit ein bisschen Gefummel kann jemand so alle Daten löschen.

Ein einfaches mysql_real_escape_string hilft da ungemein, um so etwas vorzubeugen.
PHP:
mysql_query("INSERT INTO cds SET titel = '" . mysql_real_escape_string( $_POST['titel'] ) . "', interpret = '" . mysql_real_escape_string( $_POST['titel'] ) . "', kv = '" . mysql_real_escape_string( $_POST['kv'] ) . "', backup = '" . mysql_real_escape_string( $_POST['backup'] ) . "'");
Und gleich noch ein Beispiel wie ich den Query schreiben würde. ;)


PHP:
mysql_query(sprintf(
  'INSERT INTO cds SET titel = "%s", interpret = "%s", kv = "%s", backup = "%s"',
  mysql_real_escape_string( $_POST['titel'] ) ,
  mysql_real_escape_string( $_POST['interpret'] ),
  mysql_real_escape_string( $_POST['kv'] ),
  mysql_real_escape_string( $_POST['backup'] )
));

Dabei ist lediglich zu beachten, das %s einen String erwartet, erwartet man einen Integer so nimmt man %d.
 
Du bist ein Held für mich funktioniert super.
Bist du bitte auch so lieb und würdest mir das selbe schreiben wenn ich einen Eintrag ändern will. Bekomme das mit dem Code noch nicht so ganz hin.
 
Das ist natürlich richtig, SQL-Injection wurde nicht beachtet und vieles andere auch nicht, klar kann man es viel schöner machen.
Es ging doch aber nur um das Problem mit der Checkbox. Würde man ihm ein fertiges Script vorlegen, versteht er vielleicht die ein oder andere Methode gar nicht, jeder fängt klein an und es ist doch viel schöner es sich selbst beizubringen.

Aber DeluXe hat natürlich völlig recht. für Sicherheit und guten Code solltest du seine Ideen annehmen!
 
Fertige Skripte gibt es von mir sowieso nur in Ausnahmefällen. ;)

Aber ich denke anhand der Beschreibung sollte man es verstehen können, ansonsten einfach mal ausprobieren was passiert wenn Single und Double Quotes einmal mit und einmal ohne mysql_real_escape_string() übergibt.
 
Zurück