【问题标题】:PDO:getting around echoing result of fetch and fetchAllPDO:绕过 fetch 和 fetchAll 的回显结果
【发布时间】:2018-04-07 18:32:51
【问题描述】:

我有一个包含四个字段的表。我可以更改我的查询以显示我想要的内容,即四个字段中的两个。我希望 php 为我执行此操作。

    $stmt=$db->query("select * from remote");
                $result=$stmt->fetch(PDO::FETCH_ASSOC);
                foreach($result as $row){
                        echo $row;
                }  

这给了我表格的第一“行”,其中包含所有元素。我的表格类似于

    --------------------------
    |id|name|position|my_box|
    --------------------------
    |1 |bear|3       |5     |

目前我有 4 行。使用 fetchAll 我不知道如何以可读的方式将它们回显(不使用 print_r)。我怎样才能打印出 Id=>Value 并且只有 Id 或 Value。

【问题讨论】:

  • 使用您想要的字段,而不是 *id。我没有看到value 列。我也会循环fetch
  • echo $row['name']
  • 重点是不要改变查询..
  • @Riz 为什么不呢?您使用此查询所做的工作超出了需要完成的工作。
  • 对不起,我没有更好地解释我自己。我可以,但现在我不能。这就像一个“锻炼”,我现在被要求这样做。

标签: php mysql pdo web-deployment


【解决方案1】:

获取行while它们存在:

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo $row['id'], ' - ' ,$row['name'], '<br />';
}

【讨论】:

  • 这对我有用,但如何概括?我的意思是如果我不知道我的情况下的 id 和 name?
  • 还有一个问题..你在 while 语句中进行 fetch 和我之前做的并作为 $result 传递有什么区别。因为我以我的方式尝试了你的代码并且我的电脑崩溃了(耗尽的 RAM)..
【解决方案2】:
<?php
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
    foreach ($row as $field => $value) {
        echo $field . ' => ' . $value . '<br>';
    }
}

【讨论】:

  • fetchAll 获取 所有 行的数组,因此 $value 是数组。
  • 我遇到的问题是只有 'id' 和 'name' 字段而不更改我的查询。
  • 您可以使用if (in_array($field, array('id', 'name'))) { echo $field . ' =&gt; ' . $value . '&lt;br&gt;'; },但我建议您在这种情况下使用 u_mulder 解决方案($row['id'] 等)。
猜你喜欢
  • 1970-01-01
  • 2014-11-05
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
  • 2014-01-01
相关资源
最近更新 更多