不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2019-07-03 11:41  分类:MySQL/NoSQL  编辑

问题描述:

MySQL 中带有反斜杠的内容入库后,发现反斜杠无故失踪了(俗话说被吃掉了)

例:插入

insert into tb('url') values ('absc\eeee');

结果数据库里的内容是:absceeee(反斜杠没了呢)

解决方案:

addslashes()mysqli_escape_string() 等函数进行处理,也就是在插入数据库前,把内容处理一下,如:

$cc = addslashes('absc\eeee');
insert into tb('url') values ($cc);

发生了什么:

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