关于php:为什么一行代码不能删除错误抑制器?

Why won't a line of code work with error suppressor removed?

我正在使用PHP类连接到数据库。我解决不了一个问题——请帮我解决这个问题。

我有一个功能:

1
2
3
4
5
6
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_reporting(E_ALL),并确保php.ini中的display_errors = On(也可以使用ini_set('display_errors', 'on'))。


当用于php表达式时,@会抑制该表达式的错误。所以,很可能"它不起作用",因为$rd->fetch_assoc()正在抛出一个异常。


@用于抑制错误和警告。

@不是你的问题


命令前面的@符号用于忽略执行期间发生的任何错误。

当您将一个@放在它前面时,这行代码仍然失败,但您没有看到它。试着找出$rd->fetch_assoc()的问题所在。此外,查询看起来相当错误。