@字符在PHP中有什么作用?


What does the @ character do in PHP?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
Reference - What does this symbol mean in PHP?
What does @ mean in PHP?

我的代码中有一行如下所示:

@mysql_select_db($dbname)or die("错误:无法选择数据库");

它可以工作,但我想知道@是做什么的,为什么会在那里。


@符号抑制前面表达式的任何错误和注意事项。

请参阅以下参考:php错误控制运算符

PHP supports one error control
operator: the at sign (@). When
prepended to an expression in PHP, any
error messages that might be generated
by that expression will be ignored.


在这种情况下,@将禁止常规的PHP数据库连接错误(可能包含敏感信息)。如果出现连接错误,将执行"or die"部分,失败并显示一般错误消息。该行可能是从"快速和肮脏"示例复制的。

使用错误抑制操作符@被认为是错误的样式,特别是在缺少其他形式的错误处理时。这会使调试复杂化——在没有任何迹象表明发生了错误的情况下,如何才能发现错误?在生产系统中,最好将所有错误记录到一个文件中,并禁止在页面上呈现错误。您可以在php.ini文件中这样做,或者(如果您在共享主机上,并且不允许进行配置更改)使用以下代码。

1
2
3
ini_set('display_errors', false);
ini_set('log_errors', true);
ini_set('error_log', '/var/log/apache/php-errors.log');


它抑制所有错误输出。一般来说,除非你有充分的理由,否则你不应该使用它。我不知道为什么在您发布的示例中使用它,或者为什么使用die()。应捕获错误并进行相应的处理。选择可能会失败,原因有很多,有些可能是可恢复的。就像没有建立到数据库的连接。