Tach!
- Sollte man Try-Catch-Blöcke bei jeder Aktion auf die Databank machen? Ene Aktion meine ich
prepare()
,execute()
,setAttribute()
,fetch()
)?
Es empfiehlt sich überall da, wo Fehler auftreten können, mit ihnen zu rechnen und eine Behandlung einzubauen. Bei voneinander abhängigen Geschichten ist es wenig sinnvoll, jede einzelne in ein eigenes try-catch einzurahmen, weil man ja beim Auftreten eines Fehler sowieso nicht fortfahren kann.
- Was ist der Unterschied zwischen
fetchAll()
undfetch()
inwhile
-Loop Condition Konstruktion?
Kommt drauf an, was du damit machst. Willst du nur ein Array zurückgeben, dann fetchAll(), willst du jeden Datensatz behandeln, dann kannst du auch fetchAll() in einer foreach-Schleife laufen lassen, oder die while-mit-fetch-Schleife nehmen.
Eigentlich ist es weniger ressourcenhungrig, wenn man die Datensätze einzeln bearbeitet als ein großes Array mit allen aufzubauen. Das spielt aber bei den MySQL-Extensions in PHP keine Rolle, weil die sowieso die gesamte Datenmenge im Hintergrund bereits abgeholt haben und zwischenspeichern. Das Fetchen greift nur noch auf diesen Zwischenspeicher zu. Das Verhalten kann man umschalten (buffered oder unbuffered Query). Meist sind die Datenmengen für Webseiten so gering, dass der höhere Speicherverbauch nicht ins Gewicht fällt.
- warum sollte man
exec()
, undquery()
in kombination mitfetch
-Arten verwenden? Wenns auch nur eine einfacherSELECT
-Befehl ist ohne nennenswerte Variablen.
Nimm das was du für richtig hältst. Aber beachte, dass deine Statements syntaktisch korrekt werden. Also dass alle eingefügten Daten korrekt maskiert werden.
viel zu viel aufwand? leidet die perfomance sehr darunter alles wieder aufzubauen? sollte man die Connection bestehen lassen?
Ja. Die Sache mit der Performance kannst du ja messen, ob das in deinem Fall spürbare Auswirkungen hat. Die Connection für jede Query neu zu erstellen bleibt unabhängig von der Geschwindigkeit aber für eine hintereinander abgearbeitete Webseite sinnlos, wenn es dafür keinen technischen Grund gibt. Anders sähe das bei Desktop-Anwendungen aus, wo nur gelegentlich mit Pausen dazwischen eine Query abgesetzt wird.
dedlfix.