За последние 24 часа нас посетили 18373 программиста и 1605 роботов. Сейчас ищут 938 программистов ...

Класс DB помагите пожалуйста.

Тема в разделе "Прочие вопросы по PHP", создана пользователем makzz56, 11 ноя 2013.

  1. makzz56

    makzz56 Новичок

    С нами с:
    11 ноя 2013
    Сообщения:
    3
    Симпатии:
    0
    Не пойму в чем проблема
    Код (Text):
    1. <?php
    2.     require_once "../config/config.php";
    3.     class Db extends Config{
    4.         private $connect;
    5.         function __construct(){
    6.             $this->connect = new mysqli($this->DB_HOST,$this->DB_USER,$this->DB_PASS,$this->DB_NAME);
    7.             if ($this->connect->errno){
    8.                 echo "Подключиться к базе не удалось, обратитесь к администратору. Ошибка: " . $this->connect->error;
    9.             }
    10.         }
    11.         function sql($query){
    12.             $string = $this->connect->real_escape_string($query);
    13.             $sql = $this->connect->query($string);
    14.             return $sql;
    15.         }
    16.     }
    Выдает ошибку:
    Помогите пожалуйста, в чем может быть проблема? За ранее спасибо)
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    После
    Код (Text):
    1. $this->connect = new mysqli($this->DB_HOST,$this->DB_USER,$this->DB_PASS,$this->DB_NAME);
    поставьте die(var_export($this->connect,1)), и посмотрите, что выдаст. Это раз. Два. Зачем вы экранируете весь запрос? В половине синтаксис нарушите. Экранируются только параметры
     
  3. makzz56

    makzz56 Новичок

    С нами с:
    11 ноя 2013
    Сообщения:
    3
    Симпатии:
    0
    убрал временно экранирование и добавил проверку, код:
    Код (Text):
    1. <?php
    2.     require_once "../config/config.php";
    3.     class Db extends Config{
    4.         private $connect;
    5.         function __construct(){
    6.             $this->connect = new mysqli($this->DB_HOST,$this->DB_USER,$this->DB_PASS,$this->DB_NAME) or die(var_export($this->connect,1));
    7.             if ($this->connect->errno){
    8.                 echo "Подключиться к базе не удалось, обратитесь к администратору. Ошибка: " . $this->connect->error;
    9.             }
    10.         }
    11.         function sql($query){
    12.             $sql = $this->connect->query($query);
    13.             return $sql;
    14.         }
    15.     }
    16. ?>
    Результат не изменился:
    Больше ничего не выводится...

    Добавлено спустя 1 минуту 24 секунды:
    я так понимаю что он не может вызвать функцию из обьекта которого не существует? Может я вызываю как то не правильно функцию в методе?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Да, ошибка означает, что по какой-то причине ваше поле $connect не было инициализировано в конструкторе. ПОчему - вам надо разбераться самостоятельно. Я вам, кстати, никакой OR не предлагал. Просто вставьте die. Тогда после попытки создать mysqli вы увидите, реально создался объект, или нет. Это такой отладочный приём, вместо точек останова. Ну или, если у вас есть xdebug и поддерживающая его IDE, попробуйте его средствами - поставьте точку останова, добавьте в окно слежения connect
     
  5. makzz56

    makzz56 Новичок

    С нами с:
    11 ноя 2013
    Сообщения:
    3
    Симпатии:
    0
    Спасибо за совет!)

    Добавлено спустя 1 минуту 52 секунды:
    Только без "or" выкидывает синтаксическую ошибку...
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    А точку с запятой я за вас буду ставить?