我不想繼續執行「死()」時,它僅涉及腳本的一小部分,我想:處理錯誤,並在PHP腳本
$result = mysql_query($sql) or echo("error with responses");
但它產生的錯誤。如何發佈錯誤消息並繼續執行腳本的其餘部分,因爲即使連接失敗,其餘部分也不應受到影響。
我不想繼續執行「死()」時,它僅涉及腳本的一小部分,我想:處理錯誤,並在PHP腳本
$result = mysql_query($sql) or echo("error with responses");
但它產生的錯誤。如何發佈錯誤消息並繼續執行腳本的其餘部分,因爲即使連接失敗,其餘部分也不應受到影響。
根據您的原始問題標題 - 你不能。 die
和exit
的目的是終止腳本處理。如果您不想終止腳本處理,請不要撥打die
或exit
。
在抑制錯誤輸出方面,可以使用error control operator(@
),但這是可取的。 (您必須檢查錯誤狀態自己,如果你抑制這樣的錯誤。)
例如,你可以使用:
$result = @mysql_query($sql);
if(is_resource($result)) {
// The query worked...
}
else {
// Handle error state, perhaps using mysql_error
}
然而,就表明這一點,從不隨便添加錯誤抑制器到函數調用。你必須確保你自己正確地處理任何潛在的錯誤。
檢查返回類型的mysql_query
的$result = mysql_query($sql);
if ($result===false) {
echo 'The Query failed';
}
//> Continue
您可以關閉錯誤報告,要在生產環境中做的反正。
error_reporting(0);
它仍然會拋出錯誤,但不會再顯示。
雖然這是非常不尋常的。我想不出爲什麼要接受一個mySQL錯誤的原因 - 如果問題是SQL被破壞,你通常會事先收到它。
$result = mysql_query($sql) or print("error with responses");
回聲不能在邏輯比較中使用,如你想要做什麼。您應該使用print來代替,這不會導致PHP錯誤。
您不必使用die
作爲第二個函數調用,它幾乎在每個mysql_query
教程中都用作約定。
我們正在做的是評估一個布爾表達式。 $result = $a OR $b
。如果$a
的值爲真,那麼我們從不執行$b
,因爲我們不需要。我們滿足邏輯OR
,運營商的一方是真實的,這是我們所需要的。
die()函數立即用消息退出腳本。您可以用自己的功能替換它,以打印出錯誤信息,並在不退出的情況下繼續執行腳本,例如:
function my_error_function($status) {
echo "ERROR: $status";
}
$result = mysql_query($sql) or my_error_function("Uhoh. There was a problem executing $sql.");
問題標題幾乎給了我一個動脈瘤。 – Charles 2011-05-10 20:39:14
看,現在這是一個獲得觀點/迴應的標題。通常只有一個致命的錯誤(通常是語法錯誤等)應該殺死一個腳本。你得到的具體錯誤信息是什麼? – Wige 2011-05-10 20:41:53
實際上,這很有趣,我看了問題列表後沒有注意到我的標題,然後問我。大聲笑我不想因爲mysql錯誤而終止腳本。我想繼續執行腳本的其餘部分,即使它無法從db中獲取數據。 – netrox 2011-05-10 20:47:38