使用php数组作为Postgres IN子句的参数

时间:2017-12-08 14:59:04

标签: php postgresql pdo auraphp

我正在尝试将PHP数组绑定为SQL stmt的参数。我正在使用auraSQL扩展PDO,所以看起来像这样:

$php_array = ['first', 'second', 'third']
$db->fetchColumn("SELECT * FROM my_table WHERE column IN (:php_array), ['php_array' => $php_array])"

有办法吗?我不知道怎么做。我试图将$php_array作为用逗号分隔的字符串附加并用引号括起来,但这并不起作用。

编辑:解决方案是使用AuraSql函数quote,如下所示:

 $db->fetchColumn("SELECT * FROM my_table WHERE column IN (".$db->quote($php_array).")"; 

1 个答案:

答案 0 :(得分:0)

查看quote()的Aura.Sql文档,此处:https://github.com/auraphp/Aura.Sql/blob/3.x/docs/getting-started.md#array-quoting

SQL IN子句需要以逗号分隔的值列表。 Aura.Sql quote()方法似乎可以为您生成。

您应该考虑使用perform方法。

https://github.com/auraphp/Aura.Sql/blob/3.x/docs/getting-started.md#the-perform-method