我正在用 PDO PostgreSQL 和 PHP (+一些 DOCTRINE 和 SYMFONY 敲打我的脑袋 - 但我不使用ORM)
在某些时候,我有一个 null 值,我想在bindParam()函数中使用。
就像:
$sqlReadyToBindValue->bindValue(':an_integer_field',null,PDO::PARAM_INT);
我也尝试过:
$sqlReadyToBindValue->bindValue(':an_integer_field',null,PDO::PARAM_NULL);
在这两种情况下都会引发异常:
SQLSTATE [22P02]:无效的文本表示:7错误:整数的输入语法无效:“”在[SYMFONY FOLDER] \ vendor \ doctrine \ dbal \ lib \ Doctrine \ DBAL \ Driver \ AbstractPostgreSQLDriver.php第91行
我不明白,因为我使用bindValue()函数做的任何其他事情都会通过。
我注意到通过 DOCTRINE 读取我的 null 值成为两个简单引号的日志,类似于:
at DBALException :: driverExceptionDuringQuery(object(Driver),object(PDOException),'SELECT an_integer_field FROM a_table WHERE an_integer_field = :an_integer_field', array(':an_integer_field' => ''))
在vendor \ doctrine \ dbal \ lib \ Doctrine \ DBAL \ Statement.php第17行
然后:
在AbstractPostgreSQLDriver - > convertException('使用params [“”]执行'SELECT an_integer_field FROM a_table WHERE an_integer_field = :an_integer_field
'时发生异常:SQLSTATE [22P02]:无效的文本表示:7错误:整数的输入语法无效:“”',object (PDOException))
在第116行的vendor \ doctrine \ dbal \ lib \ Doctrine \ DBAL \ DBALException.php中
然后它引发了第一个Exception,我之前写过:AbstractPostgreSQLDriver.php第91行(在屏幕上飞溅的那个)
有任何线索吗? 是否有办法确保null不会成为DOCTRINE中的引号?
答案 0 :(得分:0)
我做了一个使用' IS null'签入SQL查询而不是绑定参数。