使用PHP连接到数据库没有问题但是在我测试过的一些脚本中,我看到了connect命令的一个小区别。
@mysql_connect
和mysql_connect
之间的区别是什么?
我在编写自己的脚本时从未使用@
符号,所以只是想知道它是否有用。
提前致谢
答案 0 :(得分:16)
函数前面的@
符号使其静音。这意味着,即使失败,您也不会在执行时获得任何类型的错误消息。所以我建议:不要使用它
此外,正如@AlexanderLarikov所说,不再使用mysql_*
,社区已开始depreciate这个功能。
答案 1 :(得分:2)
这是/ error control operator。它只是允许您抑制错误。
我建议您在代码中省略它。
来自文档:
目前,“@”错误控制运营商前缀甚至会禁用 错误报告将终止脚本的严重错误 执行。除此之外,这意味着如果你使用“@”来 抑制某个功能的错误,并且它不可用 或者错误输入,脚本将在那里死亡 指示为什么。
答案 2 :(得分:1)
这是一种错误抑制机制。因此,当您尝试连接时出现错误,PHP会默默地忽略它而不是显示/记录它(取决于您的设置)。
我个人认为使用它是不好的做法,因为在我看来,你应该编写代码来处理错误,而不是默默地丢弃它们。
答案 3 :(得分:0)
@ supresses警告http://php.net/manual/en/language.operators.errorcontrol.php明智地使用它
答案 4 :(得分:0)
如果不使用任何类似的选项;
if ("I'm just making test on my srv") { error_reporting(E_ALL); } else { error_reporting(0); }
然后,可以推荐这种情况;
$conn = @mysql_connect(...); if ($conn === false) { // handle error } Or; @mysql_connect(...) or die("Could not connect to ...");
因此,如果{“1}}存在于”使用可抑制函数的行“,则@
会抑制该错误。
//可抑制吗?是的,因为如果这些是结构函数,则无法将@
应用于die, exit, eval
...函数。