2012-05-31 32 views
2

我需要在参数化查询中传递一个字符串数组。我尝试了以下,但它根本不起作用。使用PostgreSQL参数化IN/= ANY子句的数组

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

我见过的数组转换为字符串,然后使用string_to_array到输入转换为在数据库方面的阵列,但这些字符串是来自用户的输入,这可能结束糟糕,哪怕解决方案我使用了逗号以外的分隔符。如果可能的话,我宁愿使用更清洁的解决方案。

有没有办法保持这个查询参数化并传递数组,而不诉诸将数据转换为字符串?

顺便说一句,我使用PostgreSQL 8.3

+0

[PHP的PDO的可能的重复:我可以将数组绑定到IN()条件?](http://stackoverflow.com/questions/920353/php-pdo-can-i-bind-an-array-到一个合状态) – goat

回答

1

pgsql.so链接到libpq不具备这种能力。

在内部,它需要将数组序列化为字符串。

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