2010-09-01 64 views
52

可能重複:
Reference - What does this symbol mean in PHP?@在PHP中表示什麼?

我想知道什麼@意味着PHP語言。我看到有人在使用

$connect = @mysql_query('sql query here'); 

不知道爲什麼。有人能爲我解釋嗎?

+6

這是一個糟糕的壞事。永遠不要使用它,並消除你找到的每一個。 – 2010-09-01 19:08:59

+5

不要說「從不」。在測試用戶的憑證時,我可以考慮使用ldap的特定示例。如果憑證失敗,將打印一個錯誤,並且不能使用try/catch進行捕獲。你唯一能做的就是測試結果。雖然通常我會同意你的看法,但也有例外。 – Brad 2010-09-02 02:02:40

回答

52

@ operator告訴PHP來抑制錯誤信息,使他們將不會顯示。

例如,使用:

$result = mysql_query("this is an invalid query"); 

將導致警報被顯示,告訴你的MySQL查詢是無效的,而

$result = @mysql_query("this is still an invalid query"); 

不會。

但是,請注意,這是非常糟糕的編程習慣,因爲它不會使錯誤消失,它只是隱藏它們,並且由於您無法看到代碼的實際錯誤,所以它使調試變得更糟。 。

而不是使用@的,你應該display_errorsphp.ini

+0

很好的使用實際的例子,謝謝你的回答。 – NateDSaint 2010-09-01 19:03:20

+0

接受答案非常詳細的解釋... – FlyingCat 2010-09-01 19:03:59

+11

一注。 **從不**禁用'error_reporting'。你把這個設置弄錯了。在這種情況下,display_errors是你需要的。 – 2010-09-01 19:11:14

1

@是一種告訴您不需要打印錯誤消息的方法。這是一個不好的做法,因爲你可能有一個錯誤,從來沒有看到它,因爲你只是「隱藏」它。

PHP支持一個錯誤控制運算符:at符號(@)。當在PHP中添加表達式時,可能會忽略可能由該表達式生成的任何錯誤消息。


資源:

0

禁用error_reportingdisplay_errors @運算符=表示,如果有出現任何類型的錯誤,那麼就不會顯示在用戶的瀏覽器消息。有些人測試了這個功能,甚至沒有看到差別,即使他們把@放在瀏覽器中也沒有看到任何錯誤,只是爲了加起來,爲什麼發生這種情況是因爲在錯誤輸出的php.ini文件已關閉。

不同的託管公司有不同的設置,以確保您不希望爲用戶或黑客看到任何醜陋的腳本錯誤(爲他們提供線索滲透到您的網站),您始終可以使用@運算符。

希望得到這個幫助。