4

正如我在开发过程中设置error_reporting(-1);的那样,我确信每个语法错误都会被 PHP 显示出来。例如,它是

echo $ttt;

当然它给

Notice: Undefined variable: ttt in ...

在这段代码中(某个类的一部分表示 mysql 表中的一行):

public function delete(){
// ...
  $sth=$dbh->prepare('DELETE FROM tobjects WHERE IdObject=:id');
  $sth->bindParam(':id',$this->fid,PDO::PARAM_INT);
  $sth->execute();

我打错了现在$this->fid的内容,没有删除,甚至没有注意到错误,我花了很长时间才找到它。

$dbh其他地方设置为:

$dbh=new PDO("mysql:host=XXXX;port=XXXX;dbname=XXXX",$db_user,
$db_password,array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

我做错了什么或者怎么可能没有给出错误?

4

1 回答 1

4

您看不到通知,因为bindParam的参数是作为参考传递的。

function test(&$var) {
    // var may also be undefined
    var_dump($var);
}

test($undef);

这不会引发任何错误。文档:参考文献的作用

于 2013-03-09T22:27:16.980 回答