2012-05-31 59 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庫。