【发布时间】:2021-03-09 08:59:42
【问题描述】:
所以我已经阅读了几个线程,其中人们谈论如何在数据库中保存 JSON 响应,但我找不到与我的具体案例相关的线程。
我有一张表格,我想在表格的一个字段中保存原始、完整的 json 响应。该表还有其他字段。
这是表的结构:
id, (int)
result_date, (date)
result_json,(不知道是用json还是text,都试过了)
所以,对我来说,这看起来是一项相当容易的任务,但我不断收到错误,只有一些结果实际保存在数据库中,有些结果出错。
我得到的错误是:
错误异常
Warning: pg_query_params(): Query failed: ERROR: invalid input syntax for type json DETAIL: Token "names" is invalid.
代码为:
$json = file_get_contents('php://input');
$jsonInsert = pg_escape_string($json);
$result_update_keyword_data = pg_query_params($db, "UPDATE table_json SET result_json = $1 WHERE id = $2 AND result_date = CURRENT_DATE", array($jsonInsert, $id));
【问题讨论】:
-
检查您的
json是否有效(语法),在 jsonlint.com(其他可用)。如果没有,请修复 json 的数据源。 -
这里的问题是什么?如果您应该使用
json或text?如果数据始终是有效的 JSON(显然不是),则使用json(甚至更好的jsonb),但如果数据可以是有效 JSON 以外的其他内容,但您仍想存储它,则使用text。跨度> -
问题是我猜。源是有效的 json。我尝试同时使用“text”和“jsonb”作为字段类型,但仍然出现该错误。
-
pg_escape_string和pg_query_params的组合一开始没有多大意义。 -
@CBroe 对我帮助不大。能详细点吗?
标签: php json postgresql