我一直在追逐一个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导入到字段中,并保留正确的转义序列值。但是进行更新/插入时,转义序列字符 丢失 。
答案 0 :(得分:0)
MySQL也会逃避。如果在检索数据时需要转义字符,则需要转义转义字符。例如。 " \\"
答案 1 :(得分:0)
使用\\"
时,问题将解决
但是为什么你要添加额外的\
??
PHP
会将\"
视为转义序列,并将其替换为"
,您的最终查询将与'{"set": "value in "here" ok?"}'
类似。
通过添加额外的\
,您可以构建'{"set": "value in \"here\" ok?"}'
(PHP会将\\
替换为\
)