Frage zu mysql_real_escape_string
Otto Wyss
- datenbank
Ich wollte meine DB etwas besser absichern und habe mit mysql_real_escape_string angeschaut. Jetzt frage ich mich, ob das "escapen" nicht einfacher zu bewerkstelligen ist. Es stört mich, dass ich die DB-Verbindung bereits vorhanden sein muss. Warum muss das sein?
echo $begrüßung;
Ich wollte meine DB etwas besser absichern und habe mit mysql_real_escape_string angeschaut. Jetzt frage ich mich, ob das "escapen" nicht einfacher zu bewerkstelligen ist. Es stört mich, dass ich die DB-Verbindung bereits vorhanden sein muss. Warum muss das sein?
Das muss für die Kodierungen UTF-8 und die ISO-8859-x-Familie eigentlich nicht sein, aber es gibt Kodierungen (mindestens eine asiatische), bei denen sind die Zeichen mit Sonderbedeutung nicht eineindeutig Bytewerten zugeordnet. Eine Behandlung muss deshalb unter Berücksichtigung der auf der Client-Verbindung vereinbarten Kodierung erfolgen, wenn man nicht "halbe Zeichen" (ein Byte eines aus mehreren Bytes bestehenden Zeichens) behandeln will.
Es gibt die Funktion mysql_escape_string(), die die Verbindungskodierung nicht beachtet und deswegen auch nicht auf einer hergestellten Verbindung besteht. Sie ist für ISO-8859-x und UTF-8 verwendbar, aber aufgrund der oben erwähnten Problematik als deprecated eingestuft.
echo "$verabschiedung $name";
Dazu noch eine allgemeine Frage.
Was ist eigentlich die zu bevorzugende Methode, wenn ein String in die Datenbank soll? Es gibt addslashes und escape_string, welches ist besser/schöner?
Gibt es die mir aus anderen Sprachen bekannten Parameter, bei denen ich das Statement in der Form
INSERT ... VALUES (@wert1, @wert2)
formuliere und dann die Parameterwerte fülle, mit automatischer Konvertierung?
Hi,
Dazu noch eine allgemeine Frage.
Die schon zigfach beantwortet wurde ...
Was ist eigentlich die zu bevorzugende Methode, wenn ein String in die Datenbank soll?
Die, die explizit dafür bereitgestellt wird.
Es gibt addslashes und escape_string, welches ist besser/schöner?
Sind beide nicht geeignet - auch wenn sie vielleicht momentan zufällig das gleiche bewirken.
Gibt es die mir aus anderen Sprachen bekannten Parameter, bei denen ich das Statement in der Form
INSERT ... VALUES (@wert1, @wert2)
formuliere und dann die Parameterwerte fülle, mit automatischer Konvertierung?
Prepared Statements - bei PHP & MySQL bspw. mit der mysqli-Erweiterung nutzbar.
MfG ChrisB