Michael: PDO Ausgabe

Mein Ziel ist es ein array zu erstellen das so Aufgebau ist:

Array
(
    ['name1'] => Inhalt1
    ['name2'] => Inhalt2
    ['name3'] => Inhalt3
)

So wie es aussieht gibt es eine Menge an Kombinationsmöglichkeiten mit PDO, aber ich finde nicht die korrekte.

$sql = $pdo->prepare("SELECT name,inhalt FROM table WHERE part=:part ");
$sql->execute(array('part' =>100)); 

$ausgabe= $sql->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_ASSOC); # typ

Array
(
    [0] => name1
    [1] => name2
    [2] => name3
)

ausgabe= $sql->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_COLUMN, 1); # inhalt

Array
(
    [0] => Inhalt1
    [1] => Inhalt2
    [2] => Inhalt3
)

akzeptierte Antworten

  1. Tach!

    So wie es aussieht gibt es eine Menge an Kombinationsmöglichkeiten mit PDO, aber ich finde nicht die korrekte.

    Dann wird es sie so nicht geben. Ist auch eine recht spezielle Anforderung. Aber du kannst mit PDO::FETCH_ASSOC oder PDO::FETCH_NUM abfragen und das Ergebnis selbst wie gewünscht umformen, zum Beispiel mit zweimal array_column() und einmal array_combine().

    dedlfix.

  2. Hallo Michael,

    man kann auch mal eine Schleife von Hand programmieren 😉. Und den Rückgabewert von prepare und execute sollte man immer überprüfen.

    $ausgabe [];
    $sql = $pdo->prepare("SELECT name,inhalt FROM table WHERE part=:part ");
    if (!$sql)
    {
       // Errorhandling
    }
    
    if ($sql->execute(['part' =>100]))
    {
       while (($row = $sql->fetch(PDO::FETCH_ASSOC)) !== FALSE)
       {
          $ausgabe[$row['name']] = $row['inhalt']
       }
    }
    else
    {
       // Query failed
    }
    

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Danke für deinen Tipp

  3. Moin,

    So wie es aussieht gibt es eine Menge an Kombinationsmöglichkeiten mit PDO, aber ich finde nicht die korrekte.

    Du suchst PDO::FETCH_KEY_PAIR (ggf. noch mit PDO::FETCH_ASSOC kombinieren sofern nötig):

    $ausgabe= $sql->fetchAll(PDO::FETCH_KEY_PAIR);
    

    Tipp: im Handbuch die PDO::FETCH_*-Konstanten durchschauen.

    Gruß
    Tobias

    1. Hallo tk,

      verflixt noch eins, warum findet man das in der PHP Doku nur in den Userkommentaren und nicht in der regulären Parameterbeschreibung?!

      Ist ja auch noch fast ganz frisch, erst in PHP 5.2.3 hinzugekommen 🙄

      Ich habe jetzt ein Issue dafür in der PHP Doku aufgemacht, aber ob da einer drauf achtet? Mein letztes Issue ist vom 5.1. und bisher ignoriert.

      Jedenfalls habe ich Dir mal den Lösungshaken gegeben.

      Rolf

      --
      sumpsi - posui - obstruxi