Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
428 views
in Technique[技术] by (71.8m points)

php - new mysqli(): how to intercept an 'unable to connect' error?

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 ?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...