可能重複:
Reference - What does this symbol mean in PHP?@在PHP中表示什麼?
我想知道什麼@
意味着PHP語言。我看到有人在使用
$connect = @mysql_query('sql query here');
不知道爲什麼。有人能爲我解釋嗎?
可能重複:
Reference - What does this symbol mean in PHP?@在PHP中表示什麼?
我想知道什麼@
意味着PHP語言。我看到有人在使用
$connect = @mysql_query('sql query here');
不知道爲什麼。有人能爲我解釋嗎?
的@
operator告訴PHP來抑制錯誤信息,使他們將不會顯示。
例如,使用:
$result = mysql_query("this is an invalid query");
將導致警報被顯示,告訴你的MySQL查詢是無效的,而
$result = @mysql_query("this is still an invalid query");
不會。
但是,請注意,這是非常糟糕的編程習慣,因爲它不會使錯誤消失,它只是隱藏它們,並且由於您無法看到代碼的實際錯誤,所以它使調試變得更糟。 。
而不是使用@
的,你應該display_errors
在php.ini
很好的使用實際的例子,謝謝你的回答。 – NateDSaint 2010-09-01 19:03:20
接受答案非常詳細的解釋... – FlyingCat 2010-09-01 19:03:59
一注。 **從不**禁用'error_reporting'。你把這個設置弄錯了。在這種情況下,display_errors是你需要的。 – 2010-09-01 19:11:14
@
是一種告訴您不需要打印錯誤消息的方法。這是一個不好的做法,因爲你可能有一個錯誤,從來沒有看到它,因爲你只是「隱藏」它。
PHP支持一個錯誤控制運算符:at符號(@)。當在PHP中添加表達式時,可能會忽略可能由該表達式生成的任何錯誤消息。
資源:
禁用 @運算符=表示,如果有出現任何類型的錯誤,那麼就不會顯示在用戶的瀏覽器消息。有些人測試了這個功能,甚至沒有看到差別,即使他們把@放在瀏覽器中也沒有看到任何錯誤,只是爲了加起來,爲什麼發生這種情況是因爲在錯誤輸出的php.ini文件已關閉。error_reporting
和display_errors
不同的託管公司有不同的設置,以確保您不希望爲用戶或黑客看到任何醜陋的腳本錯誤(爲他們提供線索滲透到您的網站),您始終可以使用@運算符。
希望得到這個幫助。
這是一個糟糕的壞事。永遠不要使用它,並消除你找到的每一個。 – 2010-09-01 19:08:59
不要說「從不」。在測試用戶的憑證時,我可以考慮使用ldap的特定示例。如果憑證失敗,將打印一個錯誤,並且不能使用try/catch進行捕獲。你唯一能做的就是測試結果。雖然通常我會同意你的看法,但也有例外。 – Brad 2010-09-02 02:02:40