Sprawdź sobie czy odpowiada Ci takie działanie kodu, który w przypadku błędu połączenia nie pokazuje ostrzeżenia (warning)
CODE
mysqli_report(MYSQLI_REPORT_ALL);
try {
$database = new mysqli('localhost', 'root', 'password', 'db_name');
} catch(Exception $error) {
}
Albo taka propozycja użycia tego kodu:
CODE
<?php
function database() {
mysqli_report(MYSQLI_REPORT_ALL);
$database = mysqli_connect("localhost", "my_user", "my_password", "world");
return $database;
}
try {
$database = database();
} catch (Exception $e) {
// tutaj obsługujemy błąd połaczenia
// przykładowo wyświetlamy komunikat
echo sprintf ( 'Mysqli connect Error with message : "%s" and Code "%s" ', $e->getMessage(), $e->getCode() );
$database = null; // database ustawiamy na false - czyli brak połączenia, jeżeli będziemy dalej korzystali z niej w naszym skrypcie
}
if($database) { // jeżeli database przechowuje połączenie/nie jest false
if(!$database->set_charset("utf8")) { // prawdź kodowanie
throw new Exception('Błąd wyboru kodowania!');
}
}