PDO Ausgabe
Michael
- pdo
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
)
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.
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
Danke für deinen Tipp
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
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