PDO bindParam是否允许不存在变量?

时间:2013-03-09 22:16:59

标签: php mysql error-handling pdo

在开发期间,我设置了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);

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

1 个答案:

答案 0 :(得分:4)

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

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

test($undef);

这不会引发任何错误。 Doc:What References Do