DOCTRINE PDO postgresql bindValue()with null - > SQLSTATE [22P02]

时间:2016-05-13 16:51:41

标签: php postgresql symfony pdo doctrine-orm

我正在用 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中的引号

1 个答案:

答案 0 :(得分:0)

我做了一个使用' IS null'签入SQL查询而不是绑定参数。