dedlfix: PDO Unklarheiten

Beitrag lesen

Hi!

1.) Macht es Sinn überall einen Try Catch Block zu verwenden? Auch bei query Abfragen?

Auch bei einer Query kann ein Fehler auftreten. Das können zum Beispiel Syntaxfehler oder ein Abbruch der Verbindung sein. Es ist also sinnvoll, wenn du auf Fehler eingehen willst. Wenn du sie einfach so dem Benutzer vor die Füße werfen willst und/oder das Script in einem undefinierten Zustand weiterlaufen lassen willst, ergibt es natürlich keinen Sinn, auf sie zu reagieren.

2.) Wenn ich einen Fehler einbaue z.B 'selectttt fisch from Meer' dann bekomme ich keinen Fehler ausgegeben, aber der catch Block wird aufgerufen, warum?

Bitte informiere dich über die Grundlagen des Exception-Handlings. Exceptions innerhalb des try-Blocks geworfen, können im catch-Teil ausgewertet werden.

3.) Hat die query Abfrage irgendwelche Nachteile gegenüber der prepare abfrage? Welche Abfrage macht mehr Sinn? (Im Einfachen Modus, wo nichts übergeben wird)

Welche Eigenschaften haben denn die normale Abfrage und Prepared Statements, auch in Bezug auf zu übergebende Werte. In welchen Fällen braucht man diese Eigenschaften und wann nicht? Was kann man mit einem PS nachdem es prepared wurde anstellen und wie oft muss man eine herkömmliche Query zum Server senden, wenn man sie mehrfach ausführen will? Was muss der Server machen, wenn er eine herkömmliche Query abarbeiten will und was kann er sich schenken, wenn er ein Prepare und mehrere Executes zu erledigen hat?

Ich hab mal gehört das fehler nur im Prepare Modus geworfen werden.

Das PHP-Handbuch hat im PDO-Teil auch ein Kapitel zur Fehlerbehandlung.

4.) Macht es Sinn eine eigene Pdo Klasse zu machen wie ich es gemacht hab, oder geht das einfacher mit den Einstellungen?

Du kannst einen Connection-String (DSN) auch anderweitig zusammenbauen und an die bereits vorhandene PDO-Klasse übergeben. Es ist deine Entscheidung, was dir besser gefällt.

5.) $SelStmt->closeCursor(); muss man den immer am Ende schließen, auch bei query Abfragen?

Was sagt das Handbuch dazu? Was passiert im Allgemeinen mit Ressourcen am Ende eines PHP-Scripts? Hast du Not mit den Ressourcen und willst während der Script-Laufzeit welche freigeben? Schreibst du eine Bibliothek, von der du nicht weißt, ob sie bei ihren Einsetzen möglichst ressourcenschonend arbeiten muss?

6.) $this->setAttribute(PDO::ATTR_PERSISTENT, true); was brint die Einstellung, immer steht in Google die soll man machen.

Welches setAttribute meinst du? $this kann alles mögliche enthalten und PDO kennt zwei Klassen mit dieser Methode. Die generische Form, Methoden zu benennen ist: Klassenname::Methodenname, also PDO::setAttribute() oder PDOStatement::setAttribute().

Was sagt das Handbuch zu ihrer Funktionsweise? Welcher Begründung steht "in Google"? Was wird generell an Eigenschaften und zu beachtenden Dingen bei persistenten Verbindungen genannt? Insbesondere, mit welcher PHP-Einbindung (Modul vs. CGI) können sie verwendet werden?

7.) Wenn ich eine Varibale einbinde mit:
$UpdStmt->bindParam(':pBetrag', $Betrag, PDO::PARAM_INT);
Hier nehme ich INT, aber int sind doch nur ganze Zahlen, was mache ich bei Kommastellen oder ganz großen Beträgen? Double gibt es ja nicht.

Das liegt vielleicht daran, dass gebrochene Zahlen nicht in allen Systemen zur Verfügung stehen. Wer weiß. Man kann zumindest für MySQL Zahlen auch wie Strings übergeben.

Lo!