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]);
我在将 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]);