@mysql_connect和mysql_connect

时间:2012-07-31 14:49:27

标签: php database-connection

使用PHP连接到数据库没有问题但是在我测试过的一些脚本中,我看到了connect命令的一个小区别。

@mysql_connectmysql_connect之间的区别是什么?

我在编写自己的脚本时从未使用@符号,所以只是想知道它是否有用。

提前致谢

5 个答案:

答案 0 :(得分:16)

函数前面的@符号使其静音。这意味着,即使失败,您也不会在执行时获得任何类型的错误消息。所以我建议:不要使用它

此外,正如@AlexanderLarikov所说,不再使用mysql_*,社区已开始depreciate这个功能。

答案 1 :(得分:2)

这是/ error control operator。它只是允许您抑制错误。

我建议您在代码中省略它。

来自文档:

  

目前,“@”错误控制运营商前缀甚至会禁用   错误报告将终止脚本的严重错误   执行。除此之外,这意味着如果你使用“@”来   抑制某个功能的错误,并且它不可用   或者错误输入,脚本将在那里死亡   指示为什么。

答案 2 :(得分:1)

这是一种错误抑制机制。因此,当您尝试连接时出现错误,PHP会默默地忽略它而不是显示/记录它(取决于您的设置)。

我个人认为使用它是不好的做法,因为在我看来,你应该编写代码来处理错误,而不是默默地丢弃它们。

答案 3 :(得分:0)

答案 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 ...函数。