[英]Cannot bind value as INT with PDO pgsql driver
我正在运行以下代码:
$pdo = new PDO('pgsql:host=localhost;port=5432', 'postgres', 'postgres');
$statement = $pdo->prepare("
SELECT ST_AsText(
ST_Transform(
ST_GeomFromText('POINT(0 0)', 2154),
?
)
)
");
$statement->bindValue(1, 4326, PDO::PARAM_INT);
$statement->execute();
并收到以下错误:
PDOException:SQLSTATE [XX000]:内部错误:7 错误:无法解析项目字符串“4326”
查看ST_Transform()的定义,我可以看到问题是 PostgreSQL 得到?
占位符值作为text
而不是integer
,我可以通过在psql
CLI 中运行这些查询来重现:
这工作正常:
SELECT ST_AsText(
ST_Transform(
ST_GeomFromText('POINT(0 0)', 2154),
4326
)
)
这给出了错误:
SELECT ST_AsText(
ST_Transform(
ST_GeomFromText('POINT(0 0)', 2154),
'4326'
)
)
因此, pgsql
PDO 驱动程序很可能会忽略赋予bindValue()
的PDO::PARAM_INT
类型,并始终将参数作为字符串传递。 我尝试打开和关闭PDO::ATTR_EMULATE_PREPARES
,结果相同。
这是 PDO pgsql
驱动程序的已知问题吗? 还是我错过了什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.