André Laugks: PDO::FETCH_ASSOC global defenieren

Hallo!

Ich möchte PDO bebringen, immer ein assoziatives Array auszugeben. Anscheint muß man das wohl nach jedem Statment machen.

  
$sql = "SELECT * FROM language ORDER BY id_lang";  
$rs = $pdo->query($sql);  
$rs->setFetchMode(PDO::FETCH_ASSOC);  
while ($row = $rs->fetch()) {  
   print_r($row);  
}  

André Laugks

--
Die Frau geht, die Hilti bleibt!
  1. Hallo!

    Man kann soetwas in der richtung machen:

      
    class myPDO extends PDO  {  
     public function execute($sql) {  
      $rs = $this->query($sql);  
      $rs->setFetchMode(PDO::FETCH_ASSOC);  
      $rows = $rs->fetchAll();  
      return $rows;  
     }  
    }  
    $pdo = new myPDO('pgsql:host=localhost;dbname=DBNAME', 'foo', 'bar');  
    
    

    Man baut sich eine eigene Methode dazu. Aber ob das der Sinn ist bzw. überhaupt nötig?!

    André Laugks

    --
    Die Frau geht, die Hilti bleibt!
    1. echo $begrüßung;

      Man baut sich eine eigene Methode dazu. Aber ob das der Sinn ist bzw. überhaupt nötig?!

      Sobald das Projekt größer wird, ist es auch sinnvoll, Datenbankfunktionen zu kapseln und aus der eigentlichen Geschäftslogik herauszunehmen. Idealerweise holt man sich dann Daten mittels eines einzigen Funktionsaufrufs und bekommt damit einen schönen schlanken und übersichtlichen Geschäftslogikteil. Das hat auch den Vorteil, dass man man die Datenquelle wechseln kann, ohne den Rest des Programms groß anfassen zu müssen.

      echo "$verabschiedung $name";

      1. Hallo!

        Sobald das Projekt größer wird, ist es auch sinnvoll, Datenbankfunktionen zu kapseln und aus der eigentlichen Geschäftslogik herauszunehmen.

        Ich arbeite seit sehr langer Zeit mit em Abstraktionslayer AdoDB. Ich liebe AdoDB. Da PDO ist nativ in PHP, ist also schneller als jeder anderer Abstraktionslayer.

        Wenn ich aber so herumwürgen muß, sind mir ein paar Milisekunden egal.

        Grüße

        André Laugks

        --
        Die Frau geht, die Hilti bleibt!
  2. echo $begrüßung;

    Ich möchte PDO bebringen, immer ein assoziatives Array auszugeben.

    Probier es mit PDO::setAttribute() oder als driver_options-Parameter im Konstruktur und dem Parameter PDO::ATTR_DEFAULT_FETCH_MODE.

    echo "$verabschiedung $name";

    1. Hallo!

      Probier es mit PDO::setAttribute() oder als driver_options-Parameter im Konstruktur und dem Parameter PDO::ATTR_DEFAULT_FETCH_MODE.

      Mein Testserver ist runter gefahren. Ich werde das morgen mal probieren.

      André Laugks

      --
      Die Frau geht, die Hilti bleibt!