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上取下来时,它不起作用。请帮帮我:解释一下这是一种什么样的替代方法。谢谢。
- 定义"它不起作用"
- 你能告诉我们你所犯的错误吗?PS:我不知道SQL,但您可能需要将一些查询字符串部分大写。
- @坦纳我认为关键字大写是一种惯例,并没有严格执行。
- 在PHP中,@可能是什么意思的副本?
- 你应该知道,@只抑制警告,而不是致命错误。
- @我半同意你的看法,因为问题是,为什么一行代码在删除了错误抑制器的情况下不能工作?
- 请显示执行查询方法。我怀疑你的问题在那里。
- 我觉得你的API很糟糕。您应该尝试使用占位符(postgres中的pg查询参数,在mysql中模拟),而不是手动编写的内容(可能是垃圾,因为没有任何东西可以阻止它),您应该尝试只使用一个带参数的方法调用,而不是此赋值后面跟着一个方法调用。
@是错误抑制运算符。使用它作为代码行的前缀将禁止所有非致命错误。几乎每次都用是个坏主意。
如果删除后没有输出,请尝试在文件顶部或引导类型文件中添加error_reporting(E_ALL),并确保php.ini中的display_errors = On(也可以使用ini_set('display_errors', 'on'))。
- @编辑的开发人员改变了我所说的一些内容。现在没有说使用@是个坏主意,在php.ini中也没有提到display_errors = on,这有时是个问题。
当用于php表达式时,@会抑制该表达式的错误。所以,很可能"它不起作用",因为$rd->fetch_assoc()正在抛出一个异常。
@用于抑制错误和警告。
@不是你的问题
命令前面的@符号用于忽略执行期间发生的任何错误。
当您将一个@放在它前面时,这行代码仍然失败,但您没有看到它。试着找出$rd->fetch_assoc()的问题所在。此外,查询看起来相当错误。