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

Posted

技术标签:

【中文标题】如何在foreach循环中显示来自PDO的数据【英文标题】:how to display data from PDO in foreach loop 【发布时间】: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 循环 哦,我知道它现在工作正常 【参考方案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】:

    将此行添加到您的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;
    
    

【讨论】:

【参考方案4】:

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

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

【讨论】:

以上是关于如何在foreach循环中显示来自PDO的数据的主要内容,如果未能解决你的问题,请参考以下文章

PDO::bindParam 在 foreach 循环中,所有值都设置为相同吗?

来自两个foreach数组的Echo值,没有重复

以列方式而不是行方式显示来自 foreach 循环的数据

PHP:PDO fetch() 不显示结果

如何在swiftUI中的Foreach循环上显示除一项之外的图像?

为啥 foreach 循环显示来自其他用户的数据?