【问题标题】:PDO fetch one column from table into 1-dimensional arrayPDO 从表中提取一列到一维数组中
【发布时间】: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 的可能重复项

标签: php mysql arrays pdo


【解决方案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 的,其中数组必须事先知道

    【讨论】:

      猜你喜欢
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 2011-08-28
      • 2017-05-15
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多