【问题标题】:Foreach loop only returns value of first rowForeach 循环仅返回第一行的值
【发布时间】:2015-02-25 17:16:58
【问题描述】:

我有一个大的 PDO 语句,最多可以返回 10 条记录。但是,在我的 foreach 循环中,当我执行 var 转储时,我看到只返回第一条记录中的数据。如果有 10 条记录,它只显示来自第一条记录的相同数据 10 次。最终,我试图获取返回的每一行的 ID2 值并将其存储在 $blurb 中。但是同样,当前编写更多 foreach 的方式,$ID2 将始终是第一条记录的值,无论返回多少条记录。我是否需要诸如 $i=1 和 break 之类的东西来获取 var_dump 结果以显示查询中返回的每一行的不同数据?

//Query code ends here
$results2->execute();
$row2 = $results2->fetchAll(PDO::FETCH_ASSOC);

foreach ($row2 as $result5) {
echo var_dump($row2[0]);

}

$blurb = $row2[0]['ID2'];

【问题讨论】:

  • foreach ($row2 as $result5) { echo var_dump($result5); }
  • 您以$result5 进行迭代。使用var_dump($result5)
  • (另外,不要echo var_dump() -- echo 是多余的,因为var_dump() 写入输出流本身,并返回null,这是发送到@987654329 的内容@)
  • 当我更改为 var_dump($results5) 时,我只打印了 10 次 null,而不是打印了 10 次的第一行的值。我做 var_dump 的唯一原因是查看返回的 10 行中的每一行是否都是不同的值,而不是第 1 行的值一遍又一遍地重复
  • 不是$results5,而是$result5

标签: php


【解决方案1】:

请尝试这个来获取前 10 条记录

//Query code ends here
$results2->execute();
$row2 = $results2->fetchAll(PDO::FETCH_ASSOC);
$ccount=0;$data=null;
foreach ($row2 as $result5) {
  $ccount++;
    $data[]=$result5;
    if($ccount>9) {break;}
      }

$blurb = $data;

【讨论】:

  • 我会试试的。而不是 $data=null,我只是更改为 data=$row2[0]['ID2']; (这是我想从返回的每条记录中提取的日期),对吗?
  • 请尝试像 $data[]=$result5['ID2' ];
  • $count 在这里是无稽之谈。我们假设您已经使用LIMIT 限制了 SQL 中的结果。 $data[] 数组追加没有意义,因为 fetchAll() 已经返回了所有行。
  • 我们不能在编程中假设。这就是我放的原因。他没有提到sql中的限制。所以我写了。
  • 正确,我之前已经限制了结果。无论如何,它通过执行 foreach ($row2 as $result5) { $blurb = $result5['ID2'];}
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 2023-03-03
  • 2016-05-22
  • 2016-09-28
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
  • 2019-10-30
相关资源
最近更新 更多