PHP PDO PostgreSQL 无法确定数据类型

PHP PDO PostgreSQL Could Not Determine Data Type

我在将 PHP PDO 与 PostgreSQL 一起用于特定查询时遇到了一个奇怪的错误,我不明白为什么。

我有以下代码

$conn = new PDO($db, $us, $pw);

try {
   $count = $conn->prepare("select count(idno) as count from t_dummy where ( ? is null or idno = ? )");
   $count->execute([null, null]);
   $count_fetch = $count->fetch();
} catch(Exception $error) {
   echo $error;
}

var_dump($count_fetch[0]);

如果 PDO 连接到 MySQL 数据库那么它工作正常但是当连接到 PostgreSQL 数据库时它失败并出现以下错误

could not determine data type of parameter 

看起来它不喜欢为 ? is null 使用参数,但我不知道为什么,因为这是有效的 PostgreSQL 语法,在 PgAdmin

中运行良好

使用 CAST():

$conn = new PDO($db, $us, $pw);

try {
   $count = $conn->prepare("SELECT COUNT(idno) AS count FROM t_dummy WHERE ( CAST(? AS integer) IS NULL OR idno = ? );");
   $count->execute([null, null]);
   $count_fetch = $count->fetch();
} catch(Exception $error) {
   echo $error;
}

var_dump($count_fetch[0]);