Hi,
wenn du bspw. ueber mysqli_query() direkt eine Query an die Datenbank absetzt
Wie meinst Du das? Könntest Du mir da ein Besipiel geben, was der Unterscheid zu dem ist, was ich vorher gemacht habe?
Wenn du mit mysqli_query eine Query an die Datenbank absetzt, dann machst du das nach wie vor so:
mysql_query("SELECT ... FROM WHERE xyz = '".$variable."'");
Hier hast du jetzt also nach wie vor, wie auch bei der Verwendung der alten MySQL-Erweiterung, ein Problem, wenn $variable beispielsweise ein Zeichen wie ' enthaelt, dass im Kontext MySQL-Query ein Sonderzeichen darstellt.
Also muss du hier nach wie vor diese Variable vorher entsprechend behandeln.
Denn sonst kann der Parser, mit dem MySQL die Query analysiert, im Zweifelsfalle nicht mehr entscheiden, was an der Query jezt Befehls-Schluesselwoerter, und was Daten sein sollen.
Bei Prepared Statements entfaellt dies - weil der Befehlsteil der Query und die Daten auf getrennten "Kanaelen" zur Datenbank transportiert werden.
Und das mit der Codierung bekomm ich einfach nicht hin. Und ich verstehe auch nicht, warum das Problem überhaupt da ist, wenn ich schon in der DB-Grundeinstellung utf-8 festgelegt habe. UND zusätzlich noch für jede Tabellenzeile!
Die Kollation ist lediglich eine Sortiervorschrift, die bei Vergleiche und beim Sortieren zum tragen kommt - bspw., dass ein ü und ue im Deutschen gleich behandelt werden sollen, wird ueber die Angabe einer entsprechenden Kollation festgelegt.
Wenn PHP aber (bspw.) UTF-8 kodierte Daten an die Datenbank uebergibt, oder umgekehrt die Datenbank zurueck an PHP, dann muessen sich beide auch vorher darueber geeinigt haben, *dass* sie die Daten in UTF-8 kodiert uebergeben wollen.
Wenn jetzt die Default-Einstellung fuer die Verbindungskodierung bspw. eine der Latin-Varianten ist - dann wuerde MySQL die Daten automatisch umkodieren, wenn PHP ihm UTF-8 liefert. Das gibt aber Chaos.
Deshalb vor dem Absetzen der ersten Query im Script, die Daten holen oder uebertragen soll, die fuer die Verbindung zu verwendenden Kodierung aushandeln.
MfG ChrisB
„This is the author's opinion, not necessarily that of Starbucks.“