mysql - 存储json,双引号转义问题

时间:2014-03-26 14:32:16

标签: mysql json vbscript

我一直在追逐一个JSON错误,并发现如果我从磁盘加载文件以便从db加载(显然)相同的文件,我会得到不同的结果。

Mysql似乎在窃取我的转义字符。 (我正在使用vbscript;我的连接字符串是Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=foo;User=foo;Password=f00;Option=3;

执行conn.execute(...)

update courses set config = '{"set": "value in \"here\" ok?"}' where id = 21;
select config from courses where id = 21;
// prints changed value {"set": "value in "here" ok?"}

这里发生了什么?为什么mysql会取出\"并将其转换为"

如果我在服务器上使用工作台(Windows 2003)并在结果窗格中使用“从文件加载值”功能,我可以将json导入到字段中,并保留正确的转义序列值。但是进行更新/插入时,转义序列字符 丢失

2 个答案:

答案 0 :(得分:0)

MySQL也会逃避。如果在检索数据时需要转义字符,则需要转义转义字符。例如。 " \\"

答案 1 :(得分:0)

使用\\"时,问题将解决 但是为什么你要添加额外的\ ?? PHP会将\"视为转义序列,并将其替换为",您的最终查询将与'{"set": "value in "here" ok?"}'类似。
通过添加额外的\,您可以构建'{"set": "value in \"here\" ok?"}'(PHP会将\\替换为\