使用 PostgreSQL 在 PHP 上参数化 IN / =ANY 子句的数组


Parameterizing an array for IN / =ANY clauses on PHP with PostgreSQL

我需要在参数化查询中传递一个字符串数组。我尝试了以下方法,但它根本不起作用。

$params = array( array('bob','andrew','larry') );
pg_query_params($conn, 'SELECT * FROM table1 WHERE field = ANY($1)', $params)

我见过将数组转换为字符串然后使用 string_to_array 将输入转换为数据库端的数组的解决方案,但由于这些字符串是来自用户的输入,即使我使用了逗号以外的分隔符,这也可能会以糟糕的方式结束。如果可能的话,我宁愿为此使用更干净的解决方案。

有没有办法保持此查询参数化并将数组传递给它,而无需将数据转换为字符串?

顺便说一下,我正在使用PostgreSQL 8.3

pgsql.so链接到没有此功能的libpq

在内部,无论如何,它都需要将数组序列化为字符串。

libpqtypes内置了此功能,但我现在知道任何PHP库都在使用它。