Класс Connection. Класс Query. PHP

348
25 мая 2017, 11:50

Есть два класса Первый

<?php
  class Connection
  {
    protected $connection;
    private $host;
    private $connect_user;
    private $connect_pass;
    private $db_name;
    public function __construct($host, $connect_user, $connect_pass, $db_name)
    {
      $this->host = $host;
      $this->connect_user = $connect_user;
      $this->connect_pass = $connect_pass;
      $this->db_name = $db_name;
      try
      {
        $this->connection = mysqli_connect($this->host, $this->connect_user, $this->connect_pass, $this->db_name);
        echo "Nice! We connect to db. <br>";
      } 
      catch (Exception $e)
      { 
        echo "We can't connect to database. <br>" . getMessage($e) . "<br>";
      }
    }
    public function close_connect()
    {
      try
      {
        mysqli_close($this->connection);
      }
      catch(Exception $e)
      {
        echo "We can't close connection <br>" . getMessage($e) . "<br>";
      }
    }
  }
?>

Второй

<?php
  include_once "Connection.php";
  class Query
  {
    private $query_string;
    public $query_result;
    function __construct(Connection $obj, $query_string)
    {
      $this->query_string = $query_string;
      try
      {
        $this->query_result = mysqli_query($obj, $this->query_string);
        echo "Wonderfull! We run the query. <br>";
      }
      catch (Exception $e)
      {
        echo "We can't run the query. <br>" . getMessage($e) . "<br>";
      }
    }
  }
?>

Есть index.php Вот:

<?php
  include_once "Connection.php";
  include_once "Query.php";
  $host = 'localhost';
  $connect_user = 'user';
  $connect_pass = '';
  $db_name = 'coursework';
  $db_connection = new Connection($host, $connect_user, $connect_pass, $db_name);
  $db_connection->close_connect();
  $query_string = 'SELECT * FROM EMPLOYEE';
  $db_query = new Query($db_connection, $query_string);
?>

Когда срабатывает код то выдает Warning. Вот такой:

Warning: mysqli_query() expects parameter 1 to be mysqli, object given in /var/www/cro.ua/public_html/Query.php on line 15

Из ошибки понятно, что команда mysqli_query() не распознает Connection $obj как mysqli_connect, как изменить код чтобы он распознал $obj. Да и что бы вы посоветовали изменить в коде?

Answer 1

Вы передали не объект mysqli, а свой объект класа Connection. Попробуйте передавать $db_query = new Query($db_connection -> $connection, $query_string);, и еще нужно поменять доступ к свойству protected $connection класа Connection на public. И не нужно закрывать сразу соединения ($db_connection -> close_connect();), закрывайте после работы с базой.

READ ALSO
Что это за синтаксис в передаче параметра {{blocks[&ldquo;menu_footer_categories&rdquo;]}}?

Что это за синтаксис в передаче параметра {{blocks[“menu_footer_categories”]}}?

Моя задача сделать микроразметку для сайта, я нашел нужный файл, хочу прописать микроразметку для контактных данных, однако здесь имеется...

204
парсер xml проблема с &lt;&gt; и &amp;

парсер xml проблема с <> и &

при разборе simplexml файла не обрабатываются строки, в которых есть данные заключенные в угловые кавычки (<>) или знак &Подскажите, плиз, как...

250
перевести код php в codeigniter

перевести код php в codeigniter

Помогите перевести этот код php в вид codeigniter

290