使用Foreach从DB检索结果

时间:2015-03-17 07:06:47

标签: php mysql pdo

我认为这样做会更容易,但我想尝试更好的编码实践,并且我一直听到这一点,虽然不是循环结果的好方法,所以现在我来了试图切换,我以为我把它弄下来,但没有骰子。我原来的代码就是

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行试图在我明显拉动阵列时试图获得非物体。

1 个答案:

答案 0 :(得分:1)

你正在尝试echo一个对象,而$detail是一个数组。改为

echo $detail->site_name;

要:

echo $detail['site_name'];