Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在JSON(RedBeanPHP)中使用占位符?_Sql_Postgresql_Pdo_Redbean - Fatal编程技术网

Sql 如何在JSON(RedBeanPHP)中使用占位符?

Sql 如何在JSON(RedBeanPHP)中使用占位符?,sql,postgresql,pdo,redbean,Sql,Postgresql,Pdo,Redbean,我有一项任务:检查$username是否已使用标识符$id对记录进行了升级。为此,我需要检查JSON数组中的“投票”单元格中的“upvote”字段是否包含用户名(即,$username)。因此,我编写了以下代码(PostgreSQL DB): 问题是,当替换占位符时,RedBeanPHP将它们包装在单括号中,但PostgreSQL要求我包装字段/值的名称​​JSON数组的双引号 那么,如何使RB不使用单引号包装占位符呢?或者如何让占位符用双引号括起来?不需要手动编写JSON并通过RB在其中填充占

我有一项任务:检查
$username
是否已使用标识符
$id
对记录进行了升级。为此,我需要检查JSON数组中的“投票”单元格中的“upvote”字段是否包含用户名(即,
$username
)。因此,我编写了以下代码(PostgreSQL DB):

问题是,当替换占位符时,RedBeanPHP将它们包装在单括号中,但PostgreSQL要求我包装字段/值的名称​​JSON数组的双引号


那么,如何使RB不使用单引号包装占位符呢?或者如何让占位符用双引号括起来?

不需要手动编写JSON并通过RB在其中填充占位符。 有必要创建一个具有所需JSON结构的数组,并使用现成的数组/变量来填充它

我是这样做的:

$username_in_array = array('upvote' => array($username));
$username_in_json = json_encode($username_in_array);
$is_upvoted = R::getRow('SELECT "votes"::jsonb @> :username::jsonb AS "is_upvoted" FROM "pages" WHERE "id" = :id', [":id"=>$id,":username"=>$username_in_json];
请求采用以下形式:

SELECT "votes"::jsonb @> '{"upvote":["admin"]}'::jsonb AS "is_upvoted" FROM "pages" WHERE "id" = 1
我检查了-它工作了

SELECT "votes"::jsonb @> '{"upvote":["admin"]}'::jsonb AS "is_upvoted" FROM "pages" WHERE "id" = 1