2013-03-11 3 views
-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)) {

Я пытаюсь изучить объектно-ориентированный способ делать это, поэтому не очень-то и говорить о том, как устранить эту проблему.

спасибо.

+0

'новый MySQLi()' не возвращает ложь, как старый 'mysql_connect()', так что ваш 'или умереть()' не будет срабатывать. Вам нужно выполнить 'if (mysqli_connect_error()) {die (mysqli_connect_error()); } 'Вероятно, это проблема подключения, но обработка ошибок не делает то, что вы ожидаете ... –

ответ

4

Проблема заключается в конструкторе:

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

Фактическое PHP «конструктор класса» зовут __construct, не __constructor, так что ваша версия никогда не вызывается и $this->_mysql является null (то есть - не объект) ,

Попробуйте обновить функцию к следующему, и он должен работать:

function __construct($host,$username,$password,$db) { 
Смежные вопросы