Может кто-нибудь мне точку в правильном направлении, почему следующий фрагмент кода не удается ..фатальная ошибка: вызов функции-члена подготовить на необъектных
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)) {
Я пытаюсь изучить объектно-ориентированный способ делать это, поэтому не очень-то и говорить о том, как устранить эту проблему.
спасибо.
'новый MySQLi()' не возвращает ложь, как старый 'mysql_connect()', так что ваш 'или умереть()' не будет срабатывать. Вам нужно выполнить 'if (mysqli_connect_error()) {die (mysqli_connect_error()); } 'Вероятно, это проблема подключения, но обработка ошибок не делает то, что вы ожидаете ... –