2010-11-08 107 views
2

簡單的問題(我希望)。PHP MySQL錯誤處理

目前我使用下面的代碼:

mysql_query($sql) or header("Location: /error");

,防止跑我需要添加exit;die()腳本的其餘部分。有沒有辦法做到這一點使用內聯方法和上面還是需要使用:

$result = mysql_query($sql); 
if (!result) { 
    header("Location: /error"); 
    exit(); 
} 

感謝

回答

11

如何:

function customDie($location) { 
    header('Location: ' . $location); 
    exit(); 
} 


mysql_query($sql) or customDie("/error"); 
+0

從來沒有想過這樣做,好主意。謝謝! – lethalMango 2010-11-08 16:18:38

1

你可以檢查是否有一個MySQL錯誤。如果你需要做的檢查後做這樣的事情:

$result = mysql_query($sql); 
$error = mysql_error() != '' ? true : false; 

/* fancy code */ 

if($error) 
{ 
    header(location: url); 
    exit; 
} 

編輯:我誤解你的問題,現在看到你想殺死它,如果有一個錯誤,所以你可能只是這樣做:

if(mysql_error() != '') 
{ 
    header(); 
    exit; 
} 
0
$db = mysql_connect(//database info); 

$result = mysql_query(//query); 
if (mysql_error($db) != '') 
{ 
    header("Location: /error"); 
    exit(); 
} 

如果查詢完成後沒有錯誤,代碼將繼續。否則,用戶被重定向並且代碼停止執行。

5

如果你堅持以這種方式做事,最好是製作一個處理所有這些的自定義查詢方法。像

function custom_mysql_query($query) { 
    $doDebug=true; // Set to true when developing and false when you are deploying for real. 

    $result=mysql_query($query); 
    if(!$result) { 
    if($doDebug) { 
     // We are debugging so show some nice error output 
     echo "Query failed\n<br><b>$query</b>\n"; 
     echo mysql_error(); // (Is that not the name) 
    } 
    else { 
     // Might want an error message to the user here. 
    } 
    exit(); 
    } 
} 

然後只需調用custom_mysql_query代替的mysql_query東西,然後如果查詢失敗,你總是會死,如果$debug是真實的,你也將獲得其失敗的查詢和數據庫錯誤。

但是真的:你永遠不要使用mysql_query或者調用它的函數(比如我剛纔寫的那個)。這是非常不安全的,永遠不會被使用。 (太難以避免sql注入)

使用pdo類而不是mysql_方法(谷歌它,有很多教程和在線解釋)。

+0

偉大的答案謝謝!使用@ Fosco的解決方案作爲臨時工,將考慮PDO – lethalMango 2010-11-08 16:33:48