問題
- mysql里存的是json編碼后的字符串,其中中文會被轉為unicode碼,所以直接查詢是查詢不到的。
- mysql里的查詢如 like "%\u6211\u662f%" 也是不會有結果的,原因是反斜線被mysql轉義了, 需要如下的格式才能查詢: like "%\\\\u6211\\\\u662f%" (四個反斜杠) 注意:mysql5.7版以后增加了直接對json格式的支持.
解決方式:
1.寫php函數對要查詢的字符串進行unicode編碼(這里,我們利用了json_encode這個函數)
$keyword = '出票'; $bb=json_encode(array($keyword)); $str = preg_replace("/^\[\"|\"\]$/","",$bb);
2.對轉化成unicode后的字符串,替換為4個反斜杠.
$keyword= str_replace("\\","\\\\",$str); var_dump($keyword);
3.查詢
$res = DB::table('wx_push_logs')->where('data','like',"%{$keyword}%")->first();
