Try / catch in mysqli

后端 未结 3 1063
北海茫月
北海茫月 2021-01-17 22:00

I\'m following an OOP mysqli course. When connecting to the database, they use the following script:

$db = new mysqli(\"host\", \"user\", \"password\", \"dat         


        
相关标签:
3条回答
  • 2021-01-17 22:19

    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.

    0 讨论(0)
  • 2021-01-17 22:30

    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

    0 讨论(0)
  • 2021-01-17 22:32

    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

    0 讨论(0)
提交回复
热议问题