php查詢mysql中的json編碼后的字符串內容的方法


問題

  1. mysql里存的是json編碼后的字符串,其中中文會被轉為unicode碼,所以直接查詢是查詢不到的。
  2. 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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM