我是团队的一员,使用
json_encode()
将数组更改为 JSON 字符串。然后我将该字符串保存在我的数据库中。然后,我们的 ORM 转义字符串中的引号,因此如果我查看数据库,字符串将存储为如下所示:
"{\"id\":6,\"name\":\"Number five\",\"color":\"red"}"
我显然可以编写一个方法来删除转义,但我想先检查一下:是否存在用于取消转义的现有内置函数?
====
编辑:该值以这种方式存储在数据库中。即使通过命令行 mysql 命令查看也显示了这一点。当在我的应用程序中重新获取它时,它也会显示斜杠。
我肮脏的快速解决方案是对你的 json_decode 进行 base64_encode,然后使用 from_base64($b64_json_string) 存储值
<?php
$arr=["aaa","bbb","ccc"];
$b64_json_string= base64_encode(json_encode($arr));
echo $b64_json_string;
//WyJhYWEiLCJiYmIiLCJjY2MiXQ==
?>
并且比插入 mysql 更喜欢使用参数 from_base64(?) 或使用变量 from_base64($b64_json_string)
INSERT INTO test
(id, json_string)
VALUES (1, from_base64("WyJhYWEiLCJiYmIiLCJjY2MiXQ=="));