За последние 24 часа нас посетили 21535 программистов и 1027 роботов. Сейчас ищут 720 программистов ...

Подключение к MySQL ВНУТРИ КЛАССА (ООП)

Тема в разделе "MySQL", создана пользователем Vladlnx, 19 апр 2018.

  1. Vladlnx

    Vladlnx Новичок

    С нами с:
    4 дек 2017
    Сообщения:
    9
    Симпатии:
    0
    Добрый день, уважаемые форумчане. Я к вам с вопросом. На данном этапе я изучаю ООП и меня интересует вопрос, каким образом можно подключиться к MySQL с помощью ООП внутри существующего класса. Приведу пример:
    PHP:
    1. class User{
    2. protected $username = 'login';
    3. protected $userpassword = 'password';
    4. protected $userid = '0';
    5.  
    6. public function check_user($un, $up)
    7. {
    8. //ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ
    9. // ????
    10. //Код, который проверяет есть ли такой юзер в базе
    11. $this->username = $un;
    12.          $this->userpassword = md5($up);
    13.          $query = "SELECT id FROM users WHERE username='$this->username' AND password='$this->userpassword'";
    14.          $result = $dbc->query($query);
    15.          if(!$result)
    16.           {
    17.             $this->errors .= '$result == false';
    18.             return false;
    19.           }
    20.          else {
    21.            $rows=$result->num_rows;
    22.            return ($rows == 1) ? true : false;
    23.            }
    24. }
    Интересует конкретно как подключиться к базе данных MySQL в объектно-ориентированном стиле, как здесь:

    PHP:
    1. $dbc= new mysqli($db_hostname, $db_username, $db_password, $db_database);
    2. if ($dbc->connect_error) die($connect->connect_error);
    3.  
    4. if (isset($_POST['username']) && isset($_POST['password']))
    5. {
    6.    $query = "SELECT id FROM users WHERE password='$password'";
    7.   $result = $connect->query($query);
    8.   if (!$result) echo "Ошибка: $query<br>".$connect->error."<br><br>";
    9. }
    Буду благодарен если объясните максимально доступным языком, и если это возможно, с пруфами(возможно ссылку на документацию, дело в том что я не нашел).
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    не вижу начальной точки исхода переменной $dbc в классе User
    --- Добавлено ---
    думал думал что написать, столько всего... а потом, лень
     
  3. Vladlnx

    Vladlnx Новичок

    С нами с:
    4 дек 2017
    Сообщения:
    9
    Симпатии:
    0
    Там ее и нет, надо как-то встроить код, чтобы заработало. Как это сделать я как раз и не знаю.
    Можно конечно выполнить в процедурном стиле, но меня интересует именно ООП-стиль
     
  4. Vladlnx

    Vladlnx Новичок

    С нами с:
    4 дек 2017
    Сообщения:
    9
    Симпатии:
    0
    Так реально сделать? Или обязательно надо в процедурном режиме подключаться внутри объекта? Мб есть обходные пути?? Спасибо.
     
  5. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
  6. Vladlnx

    Vladlnx Новичок

    С нами с:
    4 дек 2017
    Сообщения:
    9
    Симпатии:
    0
    Всем спасибо, тему можно закрыть, нашел как решить данную проблему простым образом. Кому интересно, вот код:
    PHP:
    1. class DB{
    2.   private $link;
    3.   public $errors = '';
    4. public function __construct(){
    5.     $this->connect();
    6.   }
    7.  
    8.   public function connect()  {
    9.     $config = require_once 'config.php';
    10.     $this->link = new mysqli($config['hostname'],$config['db_username'],$config['db_password'],$config['db_name']);
    11.     return $this;
    12.   }