PDO 从表中提取一列到一维数组中
Posted
技术标签:
【中文标题】PDO 从表中提取一列到一维数组中【英文标题】:PDO fetch one column from table into 1-dimensional array 【发布时间】:2014-07-16 21:44:49 【问题描述】:我对 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.
任何帮助将不胜感激。
【问题讨论】:
Multidimensional
因为你有multiple
行或single
维度因为你有single
行。
var_dump($a)
会告诉你你得到了什么......
我不明白,我试图从一行中提取所有结果,所以我假设它是一个维度
那你,我的朋友,想要SELECT * FROM ingredients WHERE [Please put a condition here]
。这与PDO、php、数组无关,而是你对MySQL的理解
Loop results PDO PHP 的可能重复项
【参考方案1】:
<?php
$sql = "SELECT `ingredient_name` FROM `ingredients`";
$ingredients = $pdo->query($sql)->fetchAll(PDO::FETCH_COLUMN);
【讨论】:
【参考方案2】:你必须 foreach
或 while
通过你获取的行:
foreach ($ingredient_stmt->fetchAll() as $row)
var_dump($row);
while ($row = $ingredient_stmt->fetch())
var_dump($row);
两者有点等价,foreach
在加载更大的数组时会产生更大的内存负载,而while
一次只获得一行
注意如何使用fetch
和fetchAll
;前者是暂时的,一次一个地遍历每一行,后者是针对 foreach 的,其中数组必须事先知道
【讨论】:
以上是关于PDO 从表中提取一列到一维数组中的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP 中,是不是可以使用 PDO 获取一维数组? [复制]