Что значит «новый mysqli (...);»вернуть, если произошла ошибка? - PullRequest
0 голосов
/ 14 декабря 2018

Я хотел бы сохранить объект MySQL в переменную.Что возвращает конструктор, если произошла ошибка?Я имею в виду, если то есть.Я передаю неверный логин / пароль / ip / dbname, я получаю предупреждение (если предупреждения включены), но какое значение находится в переменной?

<?php
    error_reporting(E_ALL ^ E_WARNING);

    $conn = new mysqli("bad", "bad", "so bad", "too bad, what then?");
    //what is in $conn?
?>

Спасибо, Майк

Post scriptum
в руководстве я не смог найти aswer.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Из документов PHP, как указано @Funk Forty Niner.

https://secure.php.net/manual/en/mysqli.construct.php

Примечание:

Только для синтаксиса OO: при сбое соединения объект все еще возвращается.Чтобы проверить, не удалось ли установить соединение, используйте функцию mysqli_connect_error () или свойство mysqli-> connect_error, как в предыдущих примерах.

0 голосов
/ 14 декабря 2018

Он по-прежнему будет возвращать объект mysqli, так что вы сможете извлечь из него connect_error:

$conn = new mysqli("bad", "bad", "so bad", "too bad, what then?");
print_r($conn);

Результаты (первые две строки печатаются много раз):

Warning: print_r(): Couldn't fetch mysqli in /path/to/test.php on line 4 PHP
Warning:  print_r(): Couldn't fetch mysqli in /path/to/test.php on line 4 

Warning: print_r(): Couldn't fetch mysqli in /path/to/test.php on line 4 (
    [affected_rows] =>
    [client_info] =>
    [client_version] => 50011
    [connect_errno] => 2002
    [connect_error] => php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution
    [errno] =>
    [error] =>
    [error_list] =>
    [field_count] =>
    [host_info] =>
    [info] =>
    [insert_id] =>
    [server_info] =>
    [server_version] =>
    [stat] =>
    [sqlstate] =>
    [protocol_version] =>
    [thread_id] =>
    [warning_count] => )
...