是否有 PHP 函数与 mysqli::real_escape_string 相反?

问题描述 投票:0回答:1

我是团队的一员,使用

json_encode()
将数组更改为 JSON 字符串。然后我将该字符串保存在我的数据库中。然后,我们的 ORM 转义字符串中的引号,因此如果我查看数据库,字符串将存储为如下所示:

"{\"id\":6,\"name\":\"Number five\",\"color":\"red"}"

我显然可以编写一个方法来删除转义,但我想先检查一下:是否存在用于取消转义的现有内置函数?

====

编辑:该值以这种方式存储在数据库中。即使通过命令行 mysql 命令查看也显示了这一点。当在我的应用程序中重新获取它时,它也会显示斜杠。

php escaping
1个回答
0
投票

我肮脏的快速解决方案是对你的 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)

https://dbfiddle.uk/Fu88xKoD

INSERT INTO test
 (id, json_string)
VALUES (1, from_base64("WyJhYWEiLCJiYmIiLCJjY2MiXQ=="));
© www.soinside.com 2019 - 2024. All rights reserved.