【问题标题】:PHP MYSQLi loop through result set using foreach loopPHP MYSQLi 使用 foreach 循环遍历结果集
【发布时间】:2017-03-28 19:25:47
【问题描述】:

我这里有这段代码:

$conn = new mysqli("localhost", "root", "pass", "branchdatabase");

$result = $conn->query("SELECT item.item_name, stock.stock_amount FROM item INNER JOIN stock ON item.item_id=stock.fk_item_id");

var_dump($result);

foreach($result as $r)
{
  echo $r["item_name"];
}

这应该起作用,但是echo $r["item_name"]; 处的行不应该起作用,但它确实起作用,因为当我使用 var_dump 输出 $result 它返回一个 mysqli 对象,那么我如何在 foreach 循环中索引它并输出数据?当 $result 作为对象而不是数组返回时,我只是对 echo $r["item_name"]; 的工作方式感到困惑?

更新:

在 $result 上执行 var_dump 后,我得到了这个:

object(mysqli_result)[28]
  public 'current_field' => int 0
  public 'field_count' => int 2
  public 'lengths' => null
  public 'num_rows' => int 5
  public 'type' => int 0

对我来说,返回的对象是什么,那么当 $result 是对象时,为什么我可以使用 foreach 循环仍然像数组一样循环遍历数据?

【问题讨论】:

标签: php arrays mysqli


【解决方案1】:

如果我是你,我会使用 while 循环来回显输出数据。

这样的:

while($rf = $r -> fetch_assoc())
{
     echo $rf['item_name'];
     echo $rf['stock_amount'];
}

【讨论】:

  • 是的,我明白这一点,但我问的原因是一个朋友正在使用我展示的代码,我正在尝试弄清楚它是如何工作的。
猜你喜欢
  • 2015-09-26
  • 2019-02-18
  • 2015-10-05
  • 2016-06-07
  • 1970-01-01
  • 1970-01-01
  • 2017-03-22
  • 1970-01-01
  • 2010-12-17
相关资源
最近更新 更多