MySQL中反斜杠转义应用

问题描述:
mysql中带有反斜杠的内容入库后,发现反斜杠无故失踪了(俗话说被吃掉了)
 例:插入insert into tb('url') values('absc\eeee'); 结果数据库里的内容是:absceeee(反斜杠没了呢)

这么详细了相信大家都搞清楚问题了吧,下面看解决方案:

insert into tb('url') values('absc\\eeee'); 数据库里的内容是:absc\eeee

发生了什么:
mysql 在插入数据库的时候,会自动去除转义字符也就是反斜杠"\",addslashes(),mysql_escape_string()使用这些函数可以在反斜杠前再加个反斜杠也就是成了 absc\\eeee,在入库的时候第一个反斜杠被认为是转义字符,第二个反斜杠被认为是常规内容,所以去除了第一个反斜杠,保留了第二个,看到的结果是反斜杠插进去了。
 

反之 查询也一样  例如 你的字段存一个json  例:

字段名:safety

值     {"businessStartDate":1,"businessEndDate":1,"businessImg":0,"businessSafetyNo":1}

这个时候你有个问题需要改变字段值这个时候就需要用到\来转义

例如 
SELECT id,
       REPLACE(safety, "\"businessImg\":0", "\businessImg\:1") as insurance
  FROM 表明

这个时候你查出来的safety这个字段是 {"businessImg":1} 如果不使用反斜杠\查询  那查询出来的字段值是 {businessImg:1}不是一个真正的json。这个解释应该能懂了吧。

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页