2015-06-16 35 views
1

我遇到了一個項目約文件與300萬行代碼,和我的老闆問我找到一個解決方案,以防止mysql_error()顯示錯誤。可以在php中禁用mysql_error()函數嗎?

這是語法 mysql_query() OR die(mysql_error())

所以,我怎麼可以從顯示錯誤禁用mysql_error()

+1

如果一行代碼可以發起一個錯誤,你可以嘗試把@放在功能之前,以抑制它,如果我記得正確 – Goikiu

+1

這是什麼意思? 'mysql_error'本身不是「顯示錯誤」。這是否意味着你的代碼中遍佈着大量的'echo mysql_error()',你想沉默? – deceze

+1

'mysql_error'不顯示*錯誤。它返回一個字符串。 'echo'ing或'print'ing這個錯誤會顯示它。你需要解決根本原因(坦率地說,要用這麼多的代碼挖掘很多工作的地獄) - 你會後悔你在那裏採取的任何捷徑。當你處於這種狀態時,你應該停止使用'mysql_'擴展名(這是不贊成使用的,將來會從PHP中刪除)並升級到PDO或'mysqli_'擴展名。 – Quentin

回答

1

如果您仍然有錯誤,那麼您的項目還沒有完成。

一種方法是做一個站點範圍的查找/在你的文件替換,更換OR die(mysql_error())@mysql_error()前,像這樣:OR die(@mysql_error())

在函數調用前放置一個@可以抑制錯誤消息。但仔細使用它,這並不總是一個好的解決方案。

閱讀this post它鏈接到this article知道它是否是一個很好的解決方案。

我會將所有發生的OR die()更改爲自定義錯誤處理函數,然後如果出現錯誤,您仍然會知道該錯誤而不會將其顯示給用戶。

是的,這需要很長時間,但好項目需要很多時間

檢查this article創建您自己的錯誤處理功能,this other one啓用PHP錯誤日誌記錄通過.htaccess,他們真的幫助我。

+1

謝謝,我看了一篇文章,他們看起來很有趣,很有用,我正在閱讀它們。 – Carl

+2

不客氣,但請閱讀DocRattie的回答,它可以幫助你;) –

+1

我讀了文章,他們非常有趣和有用,只要我達到15的聲望,我就會upvote你的答案 – Carl

2
function mysql_own_error($debug = false){ 
    $msg = mysql_error(); 
    if($debug){ 
    echo $msg; 
    }else{ 
    // Function to log errors here. 
    } 
} 

這樣,您可以設置一個全局調試變量$debug。只有這樣才能輸出錯誤消息。 現在將每mysql_error()替換爲mysql_own_error($debug)。有編輯可以快速替代。

因此,您將防止mysql_error()公開顯示錯誤,但您仍然可以在需要時調試代碼。

+1

謝謝先生爲你的答案,但我應該在所有文件中包含一個包含變量的文件,因爲在該項目中沒有包含在所有其他文件中的文件 – Carl

+2

@Carl - 正如我在我的回答中所說的,如果你想做出好的項目,那麼你必須花費很多時間。 –

+0

@Carl如果你沒有中央配置文件,你應該在其中包含一個。如果沒有配置文件,使用3mio代碼行幾乎不可能管理錯誤。除此之外,當您遇到其他問題時,它將幫助您擺脫困境。 – DocRattie

相關問題