由于urlencode之后会产生很多'%'符号,这个符号在mysql模糊搜索中代表任意字符,显示会出现问题,例如

name字段经过urlencode之后变成‘%E6%9D%8E%E5%87%A1’,如果不加处理直接搜索,如下面的sql语句

select * from tableA where name like '%%E6%9D%8E%E5%87%A1%';

显然,由于有很多'%'符号,查询后的结果和我们想要的不一样。所以需要把encode之后的‘%’加上转义字符'\',下面是php语言的写法

$name = str_replace("%", "\%", $name);

通过转义之后,sql语句变成

select * from tableA where name like '%\%E6\%9D\%8E\%E5\%87\%A1\%';

这样经过encode之后产生的'%'号就只是单纯的字符,在mysql模糊探索中并不代表任意字符。

posted on 2017-06-27 10:34  龙种人  阅读(2231)  评论(0编辑  收藏  举报