在php中维护mysql select的正斜杠

nwlqm0z1  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(293)

直接来自db

当我直接从db中选择时,我得到的正斜杠没有问题。
查询:

SELECT REPLACE(`row`, '"', '\\"') as data FROM `table`

直接查询结果:

a:1:{i:0;s:0:\"\";}

来自php

但是在php(特别是ci)中完成后,正斜杠就不见了。查询字符串:

"SELECT REPLACE(`row`, '\"', '\\\"') as data FROM `table`"

从php结果查询:

a:1:{i:0;s:0:"";}

问:如何在php中维护正斜杠?
注意:我正在尝试使用一个包含其他值的组作为json格式字符串,所以我需要斜杠,这样就不会破坏格式,完整输出示例:

{"field_1":"Some Value","field_2":"a:1:{i:0;s:0:\"\";}"}
ego6inou

ego6inou1#

我不知道这是什么目标,但也许你可以用这个兄弟。与向前斜杠的结果相同。

json_encode();

选择时,只需返回json\u encode($value),这样它就可以保持正斜杠。

yh2wf1be

yh2wf1be2#

您的两个查询不是等价的:您的php代码的计算结果是

php > echo "SELECT REPLACE(`row`, '\"', '\\\"') as data FROM `table`";
SELECT REPLACE(`row`, '"', '\"') as data FROM `table`

你只不过是逃过了一道刀口;你还需要一双:

"SELECT REPLACE(`row`, '\"', '\\\\\"') as data FROM `table`"

这将导致原始查询:

php > echo "SELECT REPLACE(`row`, '\"', '\\\\\"') as data FROM `table`";
SELECT REPLACE(`row`, '"', '\\"') as data FROM `table`

相关问题