PHP PDO类编程:致命错误:在布尔值上调用成员函数fetchAll()

时间:2015-10-08 05:18:57

标签: php mysql pdo

我是php中的类编程新手,这是我的数据库类。

class Database
{
    private $_connection;
    private static $_instance; //The single instance
    private $_host = 'localhost';
    private $_username = 'root';
    private $_password = '';
    private $_database = 'admission_portal';

    //connect to database
    public function connectDb()
    {
        try {
            $this->_connection  = new \PDO("mysql:host=$this->_host;dbname=$this->_database", $this->_username, $this->_password);
            /*** echo a message saying we have connected ***/
            echo 'Connected to database';
        } catch (PDOException $e) {
            echo $e->getMessage();
        }
    }
    //run the query
    public function run($sql)
    {
        $result=$this->_connection->prepare($sql);
        return $result->execute();
    }
}

我将它扩展到核心类来进行一些数据库操作。

class Core extends Database 
{

    //get all the universities
    public function getData()
    {

        Database::connectDb();
        $sql = 'SELECT * FROM `adm_universities`';  
        $r=Database::run($sql);
        print_r($r->fetchAll(PDO::FETCH_OBJ));

    }
}

现在我正在调用这样的getData函数。

 $db=new Core();
 $db->getData();

但我会得到这个

  

致命错误:在布尔值上调用成员函数fetchAll()。   我的代码中有什么错误?请帮帮我

1 个答案:

答案 0 :(得分:1)

您只需要使用$result方法返回run()

public function run($sql)
    {
        $result=$this->_connection->prepare($sql);
        $result->execute();
        return $result;
    }

返回$result->execute();正在返回true,因为execute()成功了。您需要返回当前状态$result

看看是否有效。