PHP Отладка подключения mysqli, экземпляры mysqli не работают должным образом? - PullRequest
1 голос
/ 22 января 2020

Прошло много времени с тех пор, как я разместил здесь вопрос, но мне нужна помощь, пытаясь понять это поведение.

У меня есть простой скрипт для отладки, если мое соединение было установлено, с использованием mysqli.

$mysqli = new mysqli(HOST, USER, PASSWORD, DB);

if ($mysqli->connect_error){
    die('Connection error: (' . $mysqli->connect_errno . ') '.$mysqli->connect_error);
}else{
    die(var_dump($mysqli));
}

Это работает просто отлично, если соединение не было установлено, по какой-либо причине, в connect_error произошла моя ошибка, и скрипт умирает, и я знаю, почему он умер, он говорит мне. Иначе, он умирает и выдает мне значения свойств объекта соединения, все хорошо.

НО, если я добавлю новый экземпляр между объявлением и отладкой, есть 2 возможности:

Случай 1

$mysqli_invalid = new mysqli(HOST, USER, PASSWORD, DB);

$mysqli_valid = new mysqli(HOST_valid, USER_valid, PASSWORD_valid, DB_valid);

if ($mysqli_invalid->connect_error){  <--NOT SET, it comes NULL
    die('Connection error: (' . $mysqli_invalid->connect_errno . ') '.$mysqli_invalid->connect_error);
}else{
    die(var_dump($mysqli_invalid)); <--ALL CLASS PROPERTIES ARE NULL
}

В этом случае он переходит к другому, и объект mysqli выбрасывается со всеми его свойствами NULL.

Случай 2

$mysqli_invalid1 = new mysqli(HOST, USER, PASSWORD, DB);

$mysqli_invalid2 = new mysqli(HOST_invalid2, USER_invalid2, PASSWORD_invalid2, DB_invalid2);

if ($mysqli_invalid1->connect_error){  <--SET WITH $mysqli_invalid2 values. 
    die('Connection error: (' . $mysqli_invalid1->connect_errno . ') '.$mysqli_invalid1->connect_error);
}else{
    die(var_dump($mysqli_invalid1));
}

В этом случае он умирает, но мой $ mysqli_invalid1 имеет значения $ mysqli_invalid2.

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

Если PHP подготовлен для объектно-ориентированного программирования, почему это имеет такой вид? поведения?

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