在开发期间,我设置了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);
我做错了什么或者怎么可能没有给出错误?
答案 0 :(得分:4)
您没有看到通知,因为bindParam的参数作为参考传递。
function test(&$var) {
// var may also be undefined
var_dump($var);
}
test($undef);
这不会引发任何错误。 Doc:What References Do