Mysqli: __construct () возвращает NULL - PullRequest
0 голосов
/ 07 апреля 2011

Итак, у меня настроена БД, и я использую класс для подключения к нему, который расширяет Mysqli. Вот соответствующие строки кода:

class Db extends Mysqli {
  public $result = Array();

  function __construct() {
    parent::__construct(DB_HOST, DB_USER, DB_PASS, DB_DB);
  }

Я проверил информацию о соединении, и она отлично работает с функцией mysql_connect().

Моя версия PHP 5.3, и я использую MAMP 1.9.5 для запуска среды.

Итак, к проблеме, с которой я столкнулся - если я var_dump() подключусь, она вернется как NULL. Не ложь, но ноль. Теперь я проверил спецификации и, как и его предшественник mysql_connect(), должен возвращать false в случае сбоя соединения. Итак, какое возможное обстоятельство вернуло бы ложь?

Ответы [ 3 ]

2 голосов
/ 07 апреля 2011

Вы не показываете полный код.Вот что вы сделали:

class Db extends Mysqli {
    function __construct() {
       $r =  parent::__construct(DB_HOST, DB_USER, DB_PASS, DB_DB);
       var_dump($r);
    }
}

И, естественно, это возвращает NULL.Родительский конструктор никогда ничего не возвращает.Конструкторы не должны ничего возвращать.Они заполняют только что созданный экземпляр объекта.

В возвращенном объекте вы найдете дескриптор подключения и другие свойства, после ваш конструктор завершен.

0 голосов
/ 07 апреля 2011

@ Майкл, вероятно, прав насчет проблемы правописания, но здесь есть еще одна проблема:

Почему вы не используете PDO?PDO устанавливается по умолчанию в PHP 5.1 и новее.

PDO абстрагирует слой базы данных, так что вы можете писать код для любой базы данных, поддерживающей PDO, без необходимости выполнять крупные изменения.

0 голосов
/ 07 апреля 2011

Полагаю, это из-за вашей заглавной буквы.Расширение несуществующего класса Mysqli работает, и его несуществующий метод connect(), кажется, возвращает NULL

class Db extends Mysqli

Должно быть

class Db extends mysqli
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...