php - 使用 Foreach 从数据库检索结果

标签 php mysql pdo

我认为这会是一件更容易做的事情,但我正在尝试更好的编码实践,并且我一直听说 while 不是循环结果的好方法,所以现在我正在尝试切换和我以为我已经把它放下了,但没有骰子。我原来的代码是

public function GetSiteName() {
$query = <<<SQL
SELECT site_name
FROM site_details
SQL;

$resource = $this->db->prepare( $query );
$resource->execute();
while($row = $resource->fetch(PDO::FETCH_ASSOC)){
echo $row['site_name'];
    }
}

所以我尝试将其更改为 foreach 循环,并且使用 mysql 扩展获得了大约一百万种不同的方法。 (我相当肯定 99% 的人会说使用 while 循环比转到 mysql 并使用已弃用的函数更好) 所以我正在尝试的方法不起作用

public function GetSiteName(){
$query = <<<SQL
SELECT site_name
FROM site_details
SQL;

$resource = $this->db->prepare( $query );
$resource->execute();
$result = $resource->fetch(PDO::FETCH_ASSOC);
foreach($result as $detail){
echo $detail->site_name;
    }
}

我不确定我在这里做错了什么,第一个工作正常,但第二个给了我:

Notice: Trying to get property of non-object in C:\xampp\htdocs\functions.d\db.class.php on line 37

但是,如果我尝试运行 print_r($result); 我得到

Array ( [site_name] => Doxramos ) 

我认为这就是我能提供的尽可能多的细节,但我觉得我所做的一切都是正确的,但通知不会说谎。我只是不确定当我明显在拉取一个数组时,如何才能说第 37 行试图获取一个非对象。

最佳答案

您试图echo一个对象,而$detail是一个数组。更改如下

echo $detail->site_name;

致:

echo $detail['site_name'];

关于php - 使用 Foreach 从数据库检索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29093175/

相关文章:

PHP在带有花括号的字符串中嵌入数组元素

php - 时事通讯对齐中心问题

mysql - 获取订单总价

php - 这个 MySQL 插入语句有什么问题?

php 输入测试/mysql_real_escape_string/pdo

javascript - 如何将音频Blob发布到服务器JavaScript和PHP

php - Prestashop 在数据库中更改旧域后重定向到旧域

使用 IN 的 MySQL 条件更新

php - Laravel 5.0 PDO 从 MySQL 查询 float 给出不准确的结果

PHP Mysql PDO 查询从 foreach 存储的多个值输出