wake-up-neo.net

PDO holt eine Spalte aus der Tabelle in ein 1-dimensionales Array

Ich bin ziemlich neu in PDO und lasse sie mit MySQL arbeiten. Ich scheine mit dem Einfügen neuer Daten und dem Abrufen einzelner Ergebnisse gut zurechtzukommen, jedoch bin ich damit beschäftigt.

Ich habe einen Tisch, der aus Zutaten besteht. Ich versuche, alle Zutaten zu einem einzigen Array zu machen.

Ich habe die Abfrage direkt in SQL ausgeführt und es zeigt mir alle Ergebnisse an, doch mit PDO kann ich dies nicht mit der fetch bekommen. Wenn ich den fetchAll-Ansatz wie folgt verwende, werden mir alle Ergebnisse angezeigt, jedoch in einem mehrdimensionalen Array und nicht nur in einem Array.

Gibt es eine separate fetch-Methode oder muss ich eine Schleife erstellen, die die Ergebnisse in $a[] hinzufügt?

$ingredient_q = "SELECT
        `ingredient_name`
         FROM
            `ingredients`
        ";

$ingredient_stmt = $pdo->query($ingredient_q);

$ingredient_stmt ->setFetchMode(PDO::FETCH_ASSOC);

$a = $ingredient_stmt->fetchAll();

Dinge, die ich ausprobiert habe:

$a = $ingredient_stmt->fetchAll(); // Returns a multidimensional array (not what I want)
$a = $ingredient_stmt->fetch(); // Returns one single result (the first entry)
$a[] = $ingredient_stmt->fetch(); // Returns one single result but in a multidimensional array.

Jede Hilfe wird sehr geschätzt.

18
SamesJeabrook
<?php
$sql = "SELECT `ingredient_name` FROM `ingredients`";
$ingredients = $pdo->query($sql)->fetchAll(PDO::FETCH_COLUMN);
55
Tanatos

sie müssen foreach oder while durch Ihre abgerufenen Zeilen:

foreach ($ingredient_stmt->fetchAll() as $row) {
var_dump($row);
}

while ($row = $ingredient_stmt->fetch()) {
var_dump($row);
}

beide sind irgendwie gleichwertig, foreach erzeugt eine größere Speicherlast, wenn Sie ein größeres Array laden, während while jeweils eine Zeile erhält

beachten Sie, wie Sie fetch und fetchAll verwenden. Die erstere ist für eine Weile, wobei sie sich durch jede Reihe nacheinander bewegt, und die letztere ist auf foreach ausgerichtet, wo das Array vorher bekannt sein muss