gpt4 book ai didi

php - 使用 Jsonb 绑定(bind)参数?|使用 Postgres 的 Doctrine2 运算符

转载 作者:行者123 更新时间:2023-12-05 07:54:10 26 4
gpt4 key购买 nike

我在 DQL 语句中使用绑定(bind)参数时遇到问题。

我创建了一个 JSONB DBAL 数据类型和一个名为 JSON_CONTAINS_ANY() 函数的 FunctionNode。我想要的最终查询是:

SELECT * from Cache where content->'status' ?| ['开始','进行中'];

我的 DQL 语句如下所示:

$dql = "SELECT e FROM Entity e WHERE JSON_CONTAINS_ANY(content, 'status', :statusList";
$dql->setParameter('statusList',$statusList, Jsonb::JSONB);

问题:问题是 ?| 运算符被视为参数扩展索引并搞砸了我的查询。关于如何处理这个的任何想法?

最佳答案

我不知道我的回答是否相关,我看到这个问题是 6 年前提出的,但是,从字面上看,2 年前出现了更优雅的解决方案,那么有人可以提供帮助。您可以在此链接中详细阅读 https://wiki.php.net/rfc/pdo_escape_placeholders从描述中,我现在要删除 ? 您可以通过这种方式进行筛选 ??,如中所述:

That means that the “??” string would be translated to “?” when sending the query to the database, whereas “?” is still going to be interpreted as a positional parameter placeholder.

$stmt = $pdo->prepare('SELECT * FROM tbl WHERE json_col ?? ?');
$stmt->execute(['foo']);

关于php - 使用 Jsonb 绑定(bind)参数?|使用 Postgres 的 Doctrine2 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31617870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com