我是PDO的新手,让他们使用MySQL。我似乎在插入新数据并重新获得单个结果时可以正常运行,但是我坚持这一点。
我有一张由成分组成的桌子,我正在尝试将所有成分组成一个阵列。
我已经将查询直接运行到SQL中,它向我显示了所有结果,但是对于PDO,我只能用fetch
得到这个结果。当我使用下面的fetchAll
方法时,它给出了所有结果,但是在多维数组中而不仅仅是数组。
是否有单独的fetch
方法,还是我必须创建一个将结果添加到$a[]
的循环?
$ingredient_q = "SELECT
`ingredient_name`
FROM
`ingredients`
";
$ingredient_stmt = $pdo->query($ingredient_q);
$ingredient_stmt ->setFetchMode(PDO::FETCH_ASSOC);
$a = $ingredient_stmt->fetchAll();
我尝试过的事情:
$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.
非常感谢任何帮助。
答案 0 :(得分:58)
<?php
$sql = "SELECT `ingredient_name` FROM `ingredients`";
$ingredients = $pdo->query($sql)->fetchAll(PDO::FETCH_COLUMN);
答案 1 :(得分:0)
您必须通过提取的行foreach
或while
:
foreach ($ingredient_stmt->fetchAll() as $row) {
var_dump($row);
}
while ($row = $ingredient_stmt->fetch()) {
var_dump($row);
}
两者都是等价的,foreach
在你加载一个更大的数组时产生更大的内存负载,而while
一次获得一行
注意如何使用fetch
和fetchAll
;前者是暂时的,一次一个地移动每一行,后者的目标是foreach,其中数组必须事先知道