PHP Try and Catch for SQL Insert

前端 未结 9 977
南方客
南方客 2020-12-15 18:05

I have a page on my website (high traffic) that does an insert on every page load.

I am curious of the fastest and safest way to (catch an error) and continue if the

相关标签:
9条回答
  • 2020-12-15 18:28

    if you want to log the error etc you should use try/catch, if you dont; just put @ before mysql_query

    edit : you can use try catch like this; so you can log the error and let the page continue to load

    function throw_ex($er){  
      throw new Exception($er);  
    }  
    try {  
    mysql_connect(localhost,'user','pass'); 
    mysql_select_db('test'); 
    $q = mysql_query('select * from asdasda') or throw_ex(mysql_error());  
    }  
    catch(exception $e) {
      echo "ex: ".$e; 
    }
    
    0 讨论(0)
  • 2020-12-15 18:28
        $sql = "INSERT INTO   customer(FIELDS)VALUES(VALUES)";
        mysql_query($sql);
        if (mysql_errno())
        {
                echo "<script>alert('License already registered');location.replace('customerform.html');</script>";
        }   
    
    0 讨论(0)
  • 2020-12-15 18:29

    You can implement throwing exceptions on mysql query fail on your own. What you need is to write a wrapper for mysql_query function, e.g.:

    // user defined. corresponding MySQL errno for duplicate key entry
    const MYSQL_DUPLICATE_KEY_ENTRY = 1022;
    
    // user defined MySQL exceptions
    class MySQLException extends Exception {}
    class MySQLDuplicateKeyException extends MySQLException {}
    
    function my_mysql_query($query, $conn=false) {
        $res = mysql_query($query, $conn);
        if (!$res) {
            $errno = mysql_errno($conn);
            $error = mysql_error($conn);
            switch ($errno) {
            case MYSQL_DUPLICATE_KEY_ENTRY:
                throw new MySQLDuplicateKeyException($error, $errno);
                break;
            default:
                throw MySQLException($error, $errno);
                break;
            }
        }
        // ...
        // doing something
        // ...
        if ($something_is_wrong) {
            throw new Exception("Logic exception while performing query result processing");
        }
    
    }
    
    try {
        mysql_query("INSERT INTO redirects SET ua_string = '$ua_string'")
    }
    catch (MySQLDuplicateKeyException $e) {
        // duplicate entry exception
        $e->getMessage();
    }
    catch (MySQLException $e) {
        // other mysql exception (not duplicate key entry)
        $e->getMessage();
    }
    catch (Exception $e) {
        // not a MySQL exception
        $e->getMessage();
    }
    
    0 讨论(0)
提交回复
热议问题