【问题标题】:how to display data from PDO in foreach loop如何在foreach循环中显示来自PDO的数据
【发布时间】:2016-10-22 23:54:10
【问题描述】:

我是 php 新手,我正在尝试通过表内的 foreach 循环显示 stdClass 对象数据。但它不起作用。

include("../config.php");
$get_data = $conn->query("SELECT * FROM `prd_rgistration`");
$prd_data = $get_data->fetchObject();
print_r($prd_data);

数据打印

stdClass Object
(
    [id] => 24
    [password_db] => kignkgsnis
    [country_db] => United States
    [porder_db] => 56313241654321324
    [email_db] => nisa@gmail.com
)

Foreach 循环

foreach($prd_data as $eprd_data){
    echo $eprd_data->id;
}

它给出了这个错误

试图获取非对象的属性

请告诉我如何显示数据。我做错了什么。

【问题讨论】:

  • 您只获取一个对象。所以你不能循环它。
  • 使用 $get_data->fetchAll(PDO::FETCH_OBJ); 然后使用 foreach 循环
  • 哦,我知道它现在工作正常

标签: php pdo foreach stdclass


【解决方案1】:

有两种方法:-

1.bit 修改你的代码:-

遍历查询结果:-

while ($prd_data = $get_data->fetchObject()) {
    echo $prd_data->id;
}

2.使用$prd_data = $get_data->fetchAll(PDO::FETCH_OBJ);,然后使用foreach

foreach($prd_data as $eprd_data){
    echo $eprd_data->id;
}

注意:- 据我说你有兴趣获取所有记录,所以去第二个。谢谢

@Your common Sense 还建议了另一种方法

【讨论】:

    【解决方案2】:

    你需要遍历查询的结果:

    while ($prd_data = $get_data->fetchObject()) {
        echo $prd_data->id;
    }
    

    代替

    $prd_data = $get_data->fetchObject();
    

    【讨论】:

    • 错字:$eprd_data 现在不存在
    【解决方案3】:
    1. 将此行添加到您的config.php

      $conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
      
    2. 将代码更改为

      $get_data = $conn->query("SELECT * FROM `prd_rgistration`");
      foreach($get_data as $prd_data){
          echo $prd_data->id;
      }
      

    【讨论】:

      【解决方案4】:

      你只得到一个对象,而不是一个数组,所以将 while 循环包裹在 fetch 周围

      while ($prd_data = $get_data->fetchObject())
        echo $prd_data->id;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-24
        • 2021-09-06
        • 2014-03-26
        • 2017-08-05
        • 2018-06-24
        • 2021-10-04
        • 2018-04-02
        • 2019-09-24
        相关资源
        最近更新 更多