【发布时间】:2015-09-16 22:14:57
【问题描述】:
我要做的是将一组内容标签传递到我的 postgresql 数据库查询中。
我有这个功能:
public static function arrayToPdo($array, $pdocon)
{
foreach($array as &$val)
{
$val = $pdocon->quote($val);
}
return implode(",", $array);
}
这样就可以将数组转换为带引号的字符串。
我已经回应了它,我得到了 'home'、'test' 这是我所期望的标签。
那么我想在我的 PDO 中绑定该函数的返回值。这是查询的 where 部分。
where @> array[:tags]
现在我用值“home”和“test”替换了占位符,它可以工作,所以问题在于我认为绑定的工作方式。
当我执行以下操作时,它工作正常:
"where @> array[" . arrayToPdo($array, $conn) . "]"
所以这是我绑定值的代码:
$st->bindvalue(":tags", arrayToPdo($array, $conn), PDO::PARAM_STR);
我之前有另一个值被正确绑定,所以我觉得它应该可以工作。
我已经搞砸了一天半,我想不通。
基本上,当我将带引号的值输入到查询字符串中时,它会起作用;当我将函数连接到查询字符串中时,它可以工作;但是当我绑定它时它不会。
没有错误,我只知道它不起作用,因为查询没有返回任何记录。我还没有找到一种方法来查看执行查询字符串时插入的内容,所以我不确定问题是什么。
我们将不胜感激。
【问题讨论】:
标签: php string postgresql pdo