dedlfix: Frage zum Wiki-Artikel „PHP MySQL API“

Beitrag lesen

problematische Seite

Tach!

Wäre das Auslagern der einzelnen Teile in Funktionen oder sogar eine Klasse für solch einen Übersichtsartikel sinnvoll? Ich finde das allgemein schon, will den Leser (dürften wohl Anfänger sein) aber auch nicht mit zuviel auf einmal erschlagen. Ich weiß auch nicht, was da ein gutes Maß sein könnte. Ich hab diese, ich nenne sie mal „low level“-, Funktionen für DB-Abfragen schon ewig nicht mehr verwendet. Deshalb dauert meine Recherche auch länger als gedacht. Aber da irgendein abgespecktes ORM Framework vorzustellen bzw. nachzubauen kann ja auch nicht Sinn der Sache sein. Schwierig.

Was ist denn das Ziel? Nur vorzustellen, wie man damit grundlegend umgeht? Erstmal einfach und geradeaus für das Verständnis. Dann vielleicht zeigen, wie man es auch/besser machen kann. Vielleicht eine einfache Klasse für das generelle Connection-Handling, und eine Methode, die Query entgegennimmt und Ergebnis zurückgibt. Am Ende noch erwähnen, dass es ORMs gibt. Prepared Statements wären gut, aber die lassen sich nicht sehr anwenderfreundlich mit mysqli verwenden (Binding will echte Variablen-Referenzen, Übergabe als Array geht nur mit Kopfständen). PDO ist da angenehmer.

Vergiss nicht, die Aushandlung der Zeichenkodierung einzubauen.

Hab ich schon auf der Liste stehen. Aber wie macht man das am Geschicktesten? Wenn ich selbst mit sowas arbeite weiß ich, dass ich vorher alles auf UTF-8 setze und dann Ruhe habe. Wie ist das aber bspw., wenn ich im Beispielskript die DB-Kodierung z.B. auf UTF-8 setze, der Benutzer die Datei aber anders gespeichert hat?

Der Anwender muss sowieso die Verbindungsdaten anpassen, da muss die Kodierung ein Parameter davon sein.

Oder z.B. PHP auf eine andere Zeichenkodierung eingestellt ist?

Geht doch noch gar nicht.

Kann da sicherheitstechnisch irgendwas schief gehen?

Nicht mit den auf ASCII aufbauenden Kodierungen (ISO-8859-* und UTF-8). Irgendwelche asiatischen sind bei den kritischen Zeichen mehrdeutig.

Wenn ja, gibt es eine Möglichkeit, das kurz und knapp so hinzubiegen, dass es zumindest nicht „gefährlich“ ist? Geht bspw. sowas wie

Lass das dem Anwender bewusst werden, dass er die Zeichenkodierung beachten muss - auch beim Speichern seiner eigenen Dateien (in Richtung Browser ganz zu schweigen). Ich würde da keinen Automatismus einbauen, der zu irgendwelchen Ergebnissen aufgrund irgendeiner unbeachteten Einstellung führen kann. default_charset sorgt jedenfalls nicht dafür, dass PHP komplett mit der Zeichenkodierung arbeitet, geschweige denn dass Code- und Daten-Dateien und andere Datenquellen diese Kodierung verwenden. Wir haben doch da im Wiki was, darauf kann man für die schmutzigen Details verweisen.

dedlfix.