-1

有人可以指出我为什么以下代码失败的正确方向..

MySQLDb.php:

class MySQLDb 
{
        protected $_mysql; 
        protected $_query;


        function __constructor($host,$username,$password,$db)
        {
            $this->_mysql = new mysqli($host,$username,$password,$db) or die('Problem connecting to the DB.');

        }


        function query($query)
        {
            $this->_query =  filter_var($query,FILTER_SANITIZE_STRING);
            $stmt = $this->_prepareQuery();
            $stmt->execute();
            $results = $stmt->_dynamicBindResult($stmt);
        }


 protected function _prepareQuery(){

            $dbh = $this->_mysql;
            if ( !$stmt = $dbh->prepare($this->_query) ) {
                trigger_error('Problem preparing query', E_USER_ERROR);

            }

            return $stmt;
        }

索引.php:

require_once('MYSQLDb.php');

$Db = new MySQLDb('localhost','root','','blog');


$results =$Db->query("SELECT * FROM posts");

当我运行程序时,它会fatal error: call to a member function prepare on a non-objectif ( !$stmt = $dbh->prepare($this->_query) ) {

我正在尝试学习做这些事情的面向对象的方式,所以不太了解如何解决这个问题。

谢谢。

4

1 回答 1

4

问题出在您的构造函数中:

function __constructor($host,$username,$password,$db) {

实际的 PHP“类构造函数”名称是__construct, not __constructor,因此您的版本永远不会被调用并且$this->_mysqlnull(即 - 不是对象)。

尝试将功能更新为以下内容,它应该可以工作:

function __construct($host,$username,$password,$db) {
于 2013-03-11T01:39:24.670 回答