2010年5月30日 星期日

php5的try catch

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