I\'m following an OOP mysqli course. When connecting to the database, they use the following script:
$db = new mysqli(\"host\", \"user\", \"password\", \"dat
Are you asking about what's the different with $db->connect_error
and try/catch
?
$db->connect_error
mostly for the errors which we already knew (username incorrect, etc.)
and try/catch
is about system level, once an error occur,
PHP will search for the nearest try/catch block,
once it catch something, PHP will still continue like nothing happened before,
but if you don't have any try/catch
block and set_exception_handler()
too,
PHP will just stop by the error.
In the first section of code when you use the if statement, you are checking to see if that one condition is true and then outputting your message.
A try catch block essentially works like this
try{
//place code here that could potentially throw an exception
}
catch(Exception $e)
{
//We will catch ANY exception that the try block will throw
}
So you see that while your if statement is checking for a condition that you are anticipating, the try catch block will detect anything that goes wrong, even those things that you don't anticipate. Therefore, when debugging you can alter the code in the catch block to deal with exceptions as you see fit
See the PHP docs for more information about exceptions http://php.net/manual/en/language.exceptions.php
If you need to catch exceptions on mysqli extension by use try/catch block, try this code (switch on exception mode instead of classic error reporting):
// Method 1:
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_STRICT | MYSQLI_REPORT_ERROR;
// OR Method 2:
mysqli_report(MYSQLI_REPORT_STRICT | MYSQLI_REPORT_ALL);
try {
$db = new mysqli("host", "user", "password", "database");
} catch (mysqli_sql_exception $e) {
...
}
mysqli_sql_exception mysqli_driver