gpt4 book ai didi

javascript - 将 JSON 保存到 SQL

转载 作者:行者123 更新时间:2023-12-03 10:05:02 24 4
gpt4 key购买 nike

我将 JSON 存储在 MsSql 数据库中,然后通过 PHP 脚本将其传递给 Javascript,其中一个 JSON 值是传递给 jQuery-dateFormat 的格式字符串。 ,例如“yyyy-MM-dd”。

它工作得很好,直到我想包含不属于格式字符串的额外文本,特别是 d、h、a 或 p 字符。幸运的是,有一种方法可以将字符串转义为 jQuery-dateFormat 的一部分,如果我将文本用单引号 (') 括起来,我就可以使用未替换的受影响的字符。

当我尝试通过现有的 PHP 脚本将带有此附加值的 JSON 保存回数据库时,它不起作用。

现在对于一些代码,我使用标准 <textarea>作为 JSON 数据的输入并使用以下方法在服务器上验证它:

function fValidJson($input) {
json_decode($input);
switch (json_last_error()) {
case JSON_ERROR_NONE:
return $input;
break;
default:
return false;
break;
};
};

如果$input通过测试我使用更新数据库;

odbc_exec($conn, $update);

没有任何 dateFormat 格式的数据 $update看起来像这样;

update data set json = '{"folder": "example"}' where id = 1

带有日期格式数据 $update可以看起来像这样;

update data set json = '{"folder": "example", "format": "report-yyyy-MM-dd"}' where id = 1

通常这会很好,除非我想保留“report”中的“p”并将其转换为“a.m./p.m.”。通过 jQuery-dateFormat。转义一次“p”;

update data set json = '{"folder": "example", "format": "re\'p\'ort-yyyy-MM-dd"}' where id = 1

给我一​​个错误 json_last_error() ,同时转义两次;

update data set json = '{"folder": "example", "format": "re\\'p\\'ort-yyyy-MM-dd"}' where id = 1

更新数据库表行时出错。第三次转义会返回与 json_last_error() 相同的问题.

不过,这种行为是预期的。 JSON 不能包含单引号 ('),单引号 (') 会混淆 SQL。那么将这个 JSON 字符串保存到 SQL 中的其他选项是什么?

最佳答案

尝试以下操作:

更新数据集 json = '{"folder": "example", "format": "re''p''ort-yyyy-MM-dd"}' where id = 1

report中p前后的引号是两个单引号。因为json中允许使用单引号并且不需要转义,但是在mssql中你需要用两个单引号对单引号进行转义。

关于javascript - 将 JSON 保存到 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30398264/

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