【问题标题】:array of objects: want to access one property but I get "Trying to get property of non-object in ..."对象数组:想要访问一个属性,但我得到“尝试在...中获取非对象的属性”
【发布时间】:2013-01-06 18:39:42
【问题描述】:

从我的数据库中我只得到一个结果。尽管如此,由于这段代码,我得到了一个返回的数组

while($obj = $stmt->fetch(PDO::FETCH_OBJ)){
    $result[] = $obj;
}

返回的数组在索引 0 处只有一个元素(对象)。我想从这个对象访问一个属性。

我的代码如下:

return $result[0]->_id;

我收到通知

试图在...中获取非对象的属性

这是我的转储:

var_dump

array(1) { [0]=> object(stdClass)#4 (13) { ["_id"]=> string(8) "43001613" ["another-property"]=> string(5) "20608" } }

print_r

Array
(
    [0] => stdClass Object
        (
            [_id] => 43001613
            [another-property] => 20608
        )

)

这肯定只是一个小错误,但我现在想不通。

编辑: 这是完整的功能:

public function getOrtIDForPLZ($plz){
    $sql = "SELECT * FROM verortung WHERE plz = :plz LIMIT 1;";
    $result = $this->ExecuteQuery($sql, array("plz"=>$plz));

    var_dump($result);
    echo '<pre>';
    print_r($result);
    echo '</pre>';

    return $result[0]->_id;
}

输出:

array(1) { [0]=> object(stdClass)#32 (13) { ["_id"]=> string(8) "43006637" ["gemeindekennziffer"]=> string(5) "32330" ["gemeindename"]=> string(13) "Theresienfeld" ["ortsname"]=> string(13) "Theresienfeld" ["plz"]=> string(4) "2604" ["bezirk"]=> string(21) "Wiener Neustadt -Land" ["bundesland"]=> string(17) "Niederösterreich" ["lat"]=> string(11) "47.85000000" ["lon"]=> string(11) "16.23333330" ["einwohner_2001"]=> string(4) "2490" ["kfz-kennzeichen"]=> string(2) "WB" ["fläche_km2"]=> string(5) "11.44" ["seehöhe"]=> string(3) "282" } }

Array
(
    [0] => stdClass Object
        (
            [_id] => 43006637
            [gemeindekennziffer] => 32330
            [gemeindename] => Theresienfeld
            [ortsname] => Theresienfeld
            [plz] => 2604
            [bezirk] => Wiener Neustadt -Land
            [bundesland] => Niederösterreich
            [lat] => 47.85000000
            [lon] => 16.23333330
            [einwohner_2001] => 2490
            [kfz-kennzeichen] => WB
            [fläche_km2] => 11.44
            [seehöhe] => 282
        )

)

NULL

注意:试图在第 4507 行的 /home/www/home/includes/class.DatabaseQuery.php 中获取非对象的属性

【问题讨论】:

  • 不是您问题的答案:要实现您想要的,您可以将 return $obj-&gt;_id; 放入循环中而不是存储它。
  • @AndréHoffmann:你对那个特定的循环假设太多了。
  • @AndréHoffmann:哪个循环? while 语句用于从数据库返回结果。重要的一行是return $result[0]-&gt;_id;,它不在循环中。
  • @testing:这似乎是不可能的。这可能是一个“愚蠢的时刻”错误——三重检查变量名、范围等。
  • 您是否将$result 与您的可疑return $result[0]-&gt;_id 在同一范围内倾销?

标签: arrays object pdo php


【解决方案1】:

您可能多次调用此方法。在第一次通话中一切正常,但在下一次通话中......

看到NULL了吗?当然,您无法获得NULL 的属性。

如果不是这样,那么第 4507 行指向其他地方。

【讨论】:

  • 您 100% 正确。我第二次调用它,但第二次参数plz 为空。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多