За последние 24 часа нас посетили 22606 программистов и 1208 роботов. Сейчас ищут 682 программиста ...

Ну где тупанул?

Тема в разделе "Сделайте за меня", создана пользователем Viktor50, 20 янв 2018.

  1. Viktor50

    Viktor50 Новичок

    С нами с:
    20 янв 2018
    Сообщения:
    1
    Симпатии:
    0
    Привет всем. Скажите, как передать переменную $mysqli в метод select, что бы метод выполнился?
    Понимаю что ошибка простая, но понять не могу какая
    PHP:
    1. class DB
    2. {
    3.     function __construct()
    4.     {
    5.          $DB_HOST = 'localhost';
    6.          $DB_USER = 'root';
    7.          $DB_PASSWORD = '';
    8.          $DB_DATABASE = 'test';
    9.          $mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASSWORD, $DB_DATABASE);
    10.          $mysqli->set_charset('utf8');
    11.          if (mysqli_connect_errno()) {
    12.              printf("Connect failed: %s\n", mysqli_connect_error());
    13.              exit();
    14.          }
    15.     }
    16.  
    17.     public function select()
    18.     {
    19.         $result = $mysqli->query('SELECT * FROM comment');
    20.         while ($row = mysqli_fetch_assoc($result)) {
    21.             print_r($row);
    22.         }
    23.     }
    24.  
    25. }
    26.  
    27. $a = new DB();
    28. $a->select();
    выводит ошибку Fatal error: Call to a member function query()
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Опередели свойство класса DB в котором будешь хранить объект подключения к бд.
    Далее используй его везде.

    А вообще, советую начать изучать, а не копипастить.

    Используй конфиг.
     
  3. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Тебе дали подсказку определить свойство класса $mysqli ну так вот определи его после названия класса
    PHP:
    1. class DB
    2. {
    3. public static $mysqli;
    4. //или
    5. private static $mysqli;
    6.  
    7. //дальше твой код
    ну а вообще если ты второй день в программировании лучше начни с озов, если ты конечно не сверх запоминающий человек, который прочитал один раз и все заполнил на зубок.
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    зачем ему статические свойства?
     
  5. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @MouseZver
    я как пример показал) куда копать) я от куда знаю что ему нужно, а в друг он захочет использовать именно эту переменную еще где либо при вызове класса)
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    дык вроде даже чайнику понятно что он класс юзает как объект :)
     
  7. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    чайники не все знают что он использует класс как объект, так что можно с тобой не согласится)
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    все я обиделся, и тебе припомню когда - нибудь (с)
     
  9. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @MouseZver
    Я знаю что ты зверь в php я с тобой не спорю. Да и плюс я еще не выучил эти классы и методы объекты. Так что не обижайся!
     
  10. Walk

    Walk Активный пользователь

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    PHP:
    1. class Model
    2. {
    3.     /** @var \mysqli */
    4.     public $DB;
    5.  
    6.     /**
    7.      * Подключение к БД
    8.      */
    9.     public function __construct()
    10.     {
    11.         $this->DB = mysqli_connect('localhost', 'user', 'password', 'bd_name')
    12.         or die('Невозможно подключиться к серверу БД.');
    13.         $this->DB->query('SET NAMES utf8');
    14.     }
    15.  
    16.     /**
    17.      * Возвращает id и имя пользователя
    18.      *
    19.      * @param $id int
    20.      * @return array
    21.      */
    22.     public function getUserInfo($id)
    23.     {
    24.         $user = null;
    25.  
    26.         $queryString = 'SELECT `id`, `name` FROM table WHERE id = ?';
    27.         if ($stmt = $this->DB->prepare($queryString)) {
    28.             $stmt->bind_param(
    29.                 "i",
    30.                 $id
    31.             );
    32.             $stmt->execute();
    33.             if (!$stmt->error) {
    34.                 $stmt->bind_result(
    35.                     $user['id'],
    36.                     $user['name']
    37.                 );
    38.                 $stmt->fetch();
    39.             }
    40.             $stmt->close();
    41.         }
    42.  
    43.          return $user;
    44.     }
    45. }
    46.  
    47. $model = new Model();
    48. var_dump($model->getUserInfo(1))