PDO绑定params占位符PostgreSQL冲突

时间:2014-05-13 09:28:03

标签: php postgresql pdo placeholder

我正在使用postgres作为数据库,并注意到,PDO为变量绑定保留了一些Postgres语法功能,例如:

检查hstore是否有密钥SELECT * FROM t WHERE store ? 'key'

设置变量类型SELECT id::integer from t

我怎样才能摆脱这种情况?也许有人可以分享更多这样的例子?

1 个答案:

答案 0 :(得分:1)

我不认为PDO中有占位符的转义机制。

解决方法:

  • 用于在Postgres中转换值,您可以使用SQL兼容版本:CAST(id AS integer)
  • 对于hstore ?运算符,您可以使用exist(hstore, text)函数

Also

  

您不能在同一SQL语句中同时使用命名和问号参数标记;选择一个或另一个参数样式。

因此,如果使用命名参数,使用?运算符应该是安全的,反之亦然。

事实证明,你做不到。它会产生错误:mixed named and positional parameters