Php 为什么赢了';删除错误抑制器后,是否有一行代码工作?

Php 为什么赢了';删除错误抑制器后,是否有一行代码工作?,php,error-suppression,Php,Error Suppression,我正在使用PHP类连接到数据库。我无法解决一个问题--请帮我解决这个问题 我有一个功能: function getCampus($cm_id) //returns campus name { $this->query = "select cm_name from campus where cm_id = ".$cm_id.";"; $rd = $this->executeQuery(); @$data = $rd->fetch_assoc(); } 当

我正在使用PHP类连接到数据库。我无法解决一个问题--请帮我解决这个问题

我有一个功能:

function getCampus($cm_id) //returns campus name
{
    $this->query = "select cm_name from campus where cm_id = ".$cm_id.";";
    $rd = $this->executeQuery();
    @$data = $rd->fetch_assoc();
}

当我从
@$data
中删除
@
时,它不起作用。请帮帮我:解释一下这是什么,还有什么替代方法。谢谢。

@
是错误抑制运算符。使用它作为代码行的前缀将抑制所有非致命错误。几乎每次都使用它是个坏主意


如果删除后没有输出,请尝试在文件顶部或引导类型文件中添加
error\u reporting(E\u ALL)
,并确保
php.ini中的
display\u errors=On
(也可以使用
ini\u集(“display\u errors”,“On”)
).

命令前面的
@
符号用于忽略执行过程中发生的任何错误


当你把一个
@
放在那行代码前面,但你看不到它时,那行代码仍然失败。尝试找出
$rd->fetch_assoc()
的问题所在。而且,这个查询看起来相当错误

@用于抑制错误和警告


@不是您的问题

在PHP表达式中使用时,
@
会抑制该表达式的错误。因此,很可能是“它不工作”,因为
$rd->fetch_assoc()
正在引发异常。

定义“它不工作”,您能告诉我们您得到的错误吗?PS:我不懂SQL,但您可能需要将一些查询字符串部分大写。@Tanner我认为关键字大写是一种惯例,并没有严格执行。可能重复的您应该知道,
@
只抑制警告而不是致命错误。@edit的HPDeveloper对我说的话做了相当大的修改。现在它并没有说使用
@
是个坏主意,也没有在
php.ini
中提到
display\u errors=on
,这有时是个问题。