令牌“'”无效-PHP PDO PostgreSQL

时间:2019-09-17 09:00:34

标签: php postgresql pdo prepared-statement jsonb

在执行一条准备好的语句并通过绑定参数插入一个'{}'::jsonb之类的jsonb值时,出现此错误:

SQLSTATE[22P02]: Invalid text representation: 7 ERROR:  invalid input syntax for type json
DETAIL:  Token "'" is invalid.
CONTEXT:  JSON data, line 1: '...

我使用单引号'来描述字符串文字,然后通过jsonb将其转换为'string literal'::jsonb类型。但是使用准备好的语句,它不起作用,并且会引发上述错误。我在做什么错了?

字符串本身没有任何单引号。唯一的单引号是用于包装字符串的单引号。

字符串本身是使用以下代码对PHP数组进行编码的结果:

json_encode($array, JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_TAG)
<?php

$stm = $pdo->prepare("INSERT INTO t (val) VALUES (:val)");
$stm->execute($stm, [':val' => "'{}'::jsonb"]);

0 个答案:

没有答案