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】:

你必须 foreachwhile 通过你获取的行:

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


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

两者有点等价,foreach 在加载更大的数组时会产生更大的内存负载,而while 一次只获得一行

注意如何使用fetchfetchAll;前者是暂时的,一次一个地遍历每一行,后者是针对 foreach 的,其中数组必须事先知道

【讨论】:

以上是关于PDO 从表中提取一列到一维数组中的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中,是不是可以使用 PDO 获取一维数组? [复制]

从 C# 中的矩形数组中提取一维数组的最佳方法是啥?

vba中怎么选取二维数组中的某一行或某一列?

Python帮助-如何从一维数组中提取特定范围的值? [重复]

从锯齿状数组中提取子数组并用作一维数组

C++ 一维数组 二维数组 指针