Mahlzeit Tom,
bis hier IMHO gut erklärt.
Wer macht hier mal weiter?
Ich versuch's mal:
Weiters wundert mich, dass im folgenden mysql_query die Variablen direkt im String stehen und das auch funktioniert.
z.B.
mysql_query("INSERT INTO tabelle1 (wert1
,wert2
) VALUES ('$value1', '$value2')")
In dem Fall gibt es natürlich spätestens dann ein Problem, wenn in einer der Variablen ein String enthalten ist, der einzelne Hochkommata (') enthält. Darüber hinaus *kann* diese Schreibweise Probleme erzeugen, wenn es möglich ist, mehrere SQL-Abfragen in einem Rutsch an die Datenbank zu schicken (Stichwort: "SQL-Injection"). Man stelle sich vor, in der Variablen namens "$value1" würde der String "foo', 'bar'); DELETE FROM tabelle1; --" stehen ... PHP würde daraus insgesamt folgenden String machen:
"INSERT INTO tabelle1 (wert1
,wert2
) VALUES ('foo', 'bar'); DELETE FROM tabelle1; --', 'hier würde der Wert der zweiten Variable stehen')"
Was würde die Datenbank wohl daraus machen?
Ich hätte es eher so gemacht:
mysql_query("INSERT INTO tabelle1 (wert1
,wert2
) VALUES ('".$value1."', '".$value2."')")
Ich nicht - vor allem deshalb nicht, weil sich an der o.g. Problematik nichts ändert. Ich würde eher suits Empfehlung folgen und die Geschichte folgendermaßen schreiben:
mysql_query([link:http://de.php.net/manual/de/function.sprintf.php@title=sprintf]("INSERT INTO tabelle1 (
wert1,
wert2) VALUES ('%s', '%s')", [link:http://de.php.net/manual/de/function.mysql-real-escape-string.php@title=mysql_real_escape_string]($value1), mysql_real_escape_string($value2)));
Bitte um Hilfe wie man es nun richtig macht. Ich will es mir nicht falsch angewöhnen.
Ein guter Vorsatz!
MfG,
EKKi
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|