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

前端之家收集整理的这篇文章主要介绍了php – PDO:调用非对象的成员函数fetch()?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个问题在这里已经有一个答案:> 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);
原文链接:https://www.f2er.com/php/131452.html

猜你在找的PHP相关文章