I’m doing this (yes, I’m using wrong connection data, it’s to force a connection error )
try { $connection = new mysqli('localhost', 'my_user', 'my_password', 'my_db') ; } catch (Exception $e ) { echo "Service unavailable"; exit (3); }
But PHP is doing this php_warning:
mysqli::mysqli(): (28000/1045): Access denied for user ‘my_user’@’localhost’ (using password: YES)
In the example I’m using wrong connection data to force a connection error, but in the real world the database could be down, or the network could be down… etc..
Question: Is there a way, without suppressing warnings, to intercept a problem with the database connection ?
Advertisement
Answer
You need to tell mysqli to throw exceptions:
mysqli_report(MYSQLI_REPORT_STRICT); try { $connection = new mysqli('localhost', 'my_user', 'my_password', 'my_db') ; } catch (Exception $e ) { echo "Service unavailable"; echo "message: " . $e->message; // not in live code obviously... exit; }
Now you will catch the exception and you can take it from there.