加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – PDO:调用非对象的成员函数fetch()?

发布时间:2020-12-13 17:35:40 所属栏目:PHP教程 来源:网络整理
导读:这个问题在这里已经有一个答案: My PDO Statement doesn’t work1 我只是尝试PDO,我得到这个错误,致命错误:调用一个非对象的成员函数fetch(),但它不是已经在$this- db对象上? class shoutbox { private $db; function __construct($dbname,$username,$pas
这个问题在这里已经有一个答案:> My PDO Statement doesn’t work1
我只是尝试PDO,我得到这个错误,致命错误:调用一个非对象的成员函数fetch(),但它不是已经在$this-> db对象上?
class shoutbox {

    private $db;

    function __construct($dbname,$username,$password,$host = "localhost" ) 
    { # db conections
        try {
            $this->db = new PDO("mysql:host=".$hostname.";dbname=".$dbname,$password);
        }
        catch(PDOException $e)
        {
            echo $e->getMessage();
        }
    }

    function getShouts()
    {
        $sql_shouts = $this->db->query('SELECT shoutid,message,pmuserid,ipadress,time FROM shouts WHERE pmuserid == 0');

        return $sql_shouts->fetch(PDO::FETCH_OBJ);

    }

}
仔细阅读 PDO::query的文档,特别是“返回值”部分:

PDO::query() returns a PDOStatement
object,or FALSE on failure.

重要的一点是“失败失败”. FALSE不是一个对象,所以调用 – > fetch()是一个坏消息.

错误可能是由于您使用“==”比较运算符.在SQL中,它只是“=”.

你应该测试$sql_shouts不是false,然后做一些聪明的错误,如果有一个:

<?PHP
$sql_shouts = $this->db->query('...');
if ($sql_shouts === false){
    $errorInfo = $this->db->errorInfo();
    //log the error or take some other smart action
}
return $sql_shouts->fetch(PDO::FETCH_OBJ);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读