-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;
        }

index.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-objectますif ( !$stmt = $dbh->prepare($this->_query) ) {

私はこれを行うオブジェクト指向の方法を学ぼうとしているので、これをトラブルシューティングする方法についてはあまり手がかりがありません。

ありがとう。

4

1 に答える 1

4

問題はコンストラクタにあります:

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

実際の PHP の「クラス コンストラクター」名は__constructではなく__constructorであるため、バージョンが呼び出されることはありません (つまり、オブジェクトではありません) $this->_mysqlnull

関数を次のように更新してみてください。動作するはずです。

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