Moin!
$query = sprintf("INSERT INTO kunden VALUES ('%s', '%s', '%s', '25')",
htmlspecialchars($_POST['geschlecht']),
htmlspecialchars($_POST['name']),
htmlspecialchars($_POST['vorname']));
$eingabe = mysql_query($query, $connect);
>
>
> > Mach ich was beim escapen falsch
>
> Ja.
Du aber auch. htmlspecialchars ist die FALSCHE Escapefunktion!!!
Korrekt ist mysql\_real\_escape\_string(). Oder das entsprechende Äquivalent von mysqli.
> > und muss ich die Felder angeben vor values, oder nur wenn es bestimmte Felder sind???
>
> Nur wenn Du nicht alle Felder mit Werten füllen willst (weil das DBMS dann ja nicht weiß, welche Du meinst). Wenn in alle Felder etwas reinschreiben willst, kannst Du auch nur die Werte in der Reihenfolge, in der die Felder in der Tabelle existieren, angeben - das DBMS ordnet das dann automagisch richtig zu.
Es ist immer eine sehr SCHLECHTE Idee, ein SQL-Statement ohne Angabe der konkret gemeinten DB-Felder zu schreiben, weil man sich damit in die Abhängigkeit vom DB-Layout begibt. Wird durch die kleinste Änderung am Layout was verändert, muß man alle Querys nochmal abändern, selbst wenn sie eigentlich gar nicht betroffen wären, andernfalls erhält man großen Datenmüll.
Abgesehen davon ist es auch immer eine sehr gute Idee, wenn man sich durch explizites Aufführen der DB-Felder im Query vor Augen führt, welche Felder da tatsächlich benutzt werden. Das verhindert viele Bugs schon von vornherein, beispielsweise wenn die DB sich über einen falschen Datentyp beschwert, und man unabsichtlich irgendein altes Layout im Kopf hatte, dessen Feldreihenfolge schon lange nicht mehr stimmt.
- Sven Rautenberg
--
"Love your nation - respect the others."