2010年5月30日 星期日

php5的try catch

有用過其他程式語言的人都知道try{}catch(e){}這個東西, 沒想到最多人用的php在4版以前沒有, 所以很多地方都要加一堆有的沒的判斷很麻煩, 不過現在php大部份hosting也都升級到php5了! 所以把這個東西拿出來講一下, try...catch來介紹一個我目前想到最好用的地方吧! 就是mysql在新增或修改資料的時候如果有資料表欄位設為unique的時候,就超好用的了, 例子如下

//假設欄位title設為unique
//php4可能這樣寫
$id = $_POST['id'];
$title = $_POST['title'];
$query = mysql_query("SELECT * FROM table WHERE title = $title");
$row = mysql_fetch_assoc($query);
if(empty($row)){
    //新增資料
}else{
    if($row['id'] == $id){
        //修改資料
    }else{
        echo "資料重覆";
    }
}

//但在php5就這樣寫就好
try{
    if(empty($id)){
        //新增資料
    }else{
       //修改資料
    }
}catch(Exception $e){
    //新增或修改資料unique欄位內容重覆時mysql會回報錯誤
    echo "資料重覆";
}
//PS Exception的狀況有很多可能你的SQL語法寫錯,它也會報錯所以在開發的時候建議把Exceptioin給它Throw
try{
    if(empty($id)){
        //新增資料
    }else{
       //修改資料
    }
}catch(Exception $e){
    throw $e;
}

沒有留言:

張貼留言