Hi!
Die double quotes sind ANSI-Standard (aus diesem Grunde heißt der Modus auch ANSI_QUOTES).
Aus dem Wort ANSI_QUOTES kann ich irgendwie nicht darauf schließen, welche damit gemeint sind. Das MySQL-Handbuch jedenfalls sagt, dass damit die single quotes als alleinige Möglichkeit für Strings eingeschaltet werden. Die double quotes sind dann die Quote-Zeichen für Identifier.
Man muss also den MySQL-Modus erst in einen standardgerechten Modus versetzen. Das ist prinzipiell eh eine gute Idee; MySQL verhält sich dann deutlich strenger.
Aber was nützt mir das? Dass ich mich auf die Standard-Zeichengebung "einschränken" muss? Das sähe ich ja noch ein, wenn ich von einem Standard-System komme und dauernd " statt ` tippe. Aber wenn ich nie die Absicht habe, das Projekt von MySQL wegzubewegen ... Also, warum ist das eine gute Idee und warum prinzipiell?
Da das eher ein Kompatibilitätsproblem als ein Kontextwechselproblem ist, würde ich das nicht weiter thematisieren.
Würde ich nicht so sehen: Wenn sich der Kontext der Quotes je nach Einstellung des Servers ändert, sollte schon erwähnt werden, dass double quotes den Kontext innerhalb der Datenbank ändern. Du erwähnst ja auch PHP-spezifische Settings, wie Magic Quotes.
Solange ich hier im Forum mitlese ist mir noch nie aufgefallen, dass jemand aufgrund des ANSI_QUOTES-Modus Kontextwechselnichtbeachtungsprobleme bekam. Noch nicht mal dass den jemand ernsthaft nutzt.
Es mag ein Problem sein, wenn jemand die falschen Zeichen am falschen Ort verwendet und daraufhin mit den falschen Maskierfunktionen die Werte bearbeitet. Doch das wird eher auffallen, weil der Programmteil generell nicht wie gewünscht arbeitet und weniger weil bestimmte Daten ein Problem bereiten. (Und wem das nicht auffällt testet seine Programme nicht genug.)
Es kommt mir nicht darauf an, den Artikel mit allen möglichen Konstellationen zu (über)füllen. Es sollte schon eine gewisse Relevanz haben und die Leser hauptsächlich für die Problematik als solche sensibilisieren. In Relevanzsinne habe ich die Magic Quotes aufgenommen, weil die leider immer noch ein signifikantes Problem sind.
Lo!