Php 如何在foreach循环中显示来自PDO的数据

Php 如何在foreach循环中显示来自PDO的数据,php,pdo,foreach,stdclass,Php,Pdo,Foreach,Stdclass,我是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 [passw

我是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;
}
它给出了这个错误

正在尝试获取非对象的属性


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

您需要循环查询结果:

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

$prd_data = $get_data->fetchObject();

您只获得一个对象,而不是数组,因此围绕fetch包装while循环

while ($prd_data = $get_data->fetchObject())
  echo $prd_data->id;
  • config.php中添加这一行

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

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

  • 有两种方法可以做到这一点:-

    1.对代码进行位修改:-

    循环查询结果:-

    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建议的

    您只获取一个对象。所以你不能在它上面循环然后使用foreach loop哦,我看到它现在工作很好输入:
    $eprd\u数据
    现在不存在