while($rowForStateList = @mysql_fetch_array($resForStateList))
{
$sid[$i] = $rowForStateList['state_auto_id'];
$sname[$i] = $rowForStateList['state_name'];
$spid[$i] = $rowForStateList['country_auto_id'];
$i++;
}和
while($rowForStateList = mysql_fetch_array($resForStateList))
{
$sid[$i] = $rowForStateList['state_auto_id'];
$sname[$i] = $rowForStateList['state_name'];
$spid[$i] = $rowForStateList['country_auto_id'];
$i++;
}发布于 2011-08-25 16:25:20
不同之处在于,第一个代码示例中的@mysql_fetch_array获取数组,抑制任何错误,而mysql_fetch_array执行相同的操作,但不抑制错误。实际上,第二种方法更正确。
使用@的坏处在于它会使调试变得复杂。有了这种抑制,在发生错误的情况下,您将以空数组结束,因此它看起来就像用于获取$resForStateList的查询返回了空结果。但是,您实际上可能已经破坏了查询,拒绝了数据库连接以及其他任何东西。使用@ ,你永远不会知道出了什么问题,。
所以,不要使用@。相反,请使用error handling functions。最好的方法是检查某些东西是否可能导致错误,例如,如果出现任何错误,mysql_query将返回false,因此您可能希望像这样检查它
$result = nysql_query("qwerty");
if (!$result){
echo mysql_error();
}发布于 2011-08-25 16:24:00
不同之处在于,前者将屏蔽mysql_fetch_array()中发生的任何错误,从而使调试更加困难。
发布于 2011-08-25 16:26:08
第一个版本中的@基本上意味着“如果这个函数触发错误,只需隐藏它,不记录或显示它”。
永远不要使用@ error抑制运算符!这不仅会造成调试的噩梦,还会损害应用程序的性能。使用error_reporting、log_errors和display_errors来设置正确的错误消息行为。
https://stackoverflow.com/questions/7187130
复制相似问题