Der-Dennis: Frage zum Wiki-Artikel „PHP MySQL API“

Beitrag lesen

problematische Seite

Hallo dedlfix,

danke für die Rückmeldung.

Mir fällt aber gerade auf, dass da besser wohl noch die Fehlerbehandlung mit hinzu genommen werden sollte.

Zumindest andeuten. Wie auf Fehler reagiert werden soll, ist Sache des Verwenders und seines konkreten Anwendungsfalles.

Gut, so hatte ich mir das auch gedacht.

Hintergrund meiner Frage ist, dass das einigermaßen übersichtlich bleiben soll.

Eigentlich wäre Exception werfen die übersichtlichste Art. Danach kommt vorzeitiges return.

Exception werfen fände ich grundsätzlich auch am besten.

Aber wenn du die Datenbankabfrage nicht in eine Funktion steckst, bleibt wohl nur verschachtelte if-Abfragen zu verwenden.

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.

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? Oder z.B. PHP auf eine andere Zeichenkodierung eingestellt ist? Kann da sicherheitstechnisch irgendwas schief gehen?
Wenn ja, gibt es eine Möglichkeit, das kurz und knapp so hinzubiegen, dass es zumindest nicht „gefährlich“ ist? Geht bspw. sowas wie

$charset = 'utf-8';
ini_set('default_charset', $charset);

$m = mysqli_connect(/* ... */);
mysqli_set_charset($m, str_replace('-', '', $charset));

oder

$m = mysqli_connect(/* ... */);
mysqli_set_charset($m, str_replace('-', '', ini_get('default_charset')));

? Und alle anderen Einstellungen sind nicht relevant?

Tu mich da wie gesagt gerade etwas schwer. Der Artikel dürfte auf jeden Fall deutlich ausführlicher werden als gedacht, aber das muss ja nicht schlimm sein.

Gruß
Dennis