PDO - 注意:尝试获取非对象的属性

时间:2015-12-31 21:47:23

标签: php pdo

这个功能有什么问题?

function journeygetLeadertalks($link, $journeyid)
{
    $thingResult = $link->prepare("SELECT `leadertalks` FROM `journey` WHERE journeyid=:journeyid");
    $thingResult->execute([
        "journeyid" => $journeyid
    ]);


    if($thingResult->fetchObject()->leadertalks == "NULL")
        return "imgs/noimg.png";
    else
        return $thingResult->fetchObject()->leadertalks;
}

数据库图片: 当我将它用于leadertalks和leadertalksImage时,此功能每次都有效,我该怎么办?

1 个答案:

答案 0 :(得分:1)

问题是您要两次拨打fetchObject()。您只需在if中拨打一次,然后如果该值不匹配,您就可以在else中再次呼叫它。但是您的查询只返回一行,因此第二行fetchObject()会返回false,而且这不是对象。您需要将结果保存在变量中。

此外,如果查询根本没有匹配任何内容,则初始fetchObject()将返回false,因此您也应该检查该内容。

$row = $thingResult->fetchObject();
if ($row && $row->leadertalks == "NULL") {
    return "imgs/noimg.png";
} else {
    return $row->leadertalks;
}