我尝试如下将 PHP 数组传递给 Postgres,但出现错误;
$arrayIDs = array('24','7','8','9','13');
$data = SelectItemsForUpdate($arrayIDs);
function SelectItemsForUpdate($arrayIDs)
{
$query = PrepareQuery('select id, quantity from items where id in ($1) for update ');
$result = ExecutePreparedQuery($query, Array($arrayIDs));
...
...
}
Postgres 数组需要大括号,而 PHP 需要圆括号。因此,首先如下所示分解数组,然后使用 ANY 运算符将其作为参数传递。
以下语法有效:
$arrayIDs = '{'.implode(', ',$arrayIDs).'}';
$query = PrepareQuery('select id, quantity from items where id = ANY($1)');
$result = ExecutePreparedQuery($query, Array($arrayIDs));