由於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模糊探索中並不代表任意字符。