文档章节

php查询mysql中的json编码后的字符串内容的方法

jroam
 jroam
发布于 2017/04/09 15:15
字数 289
阅读 67
收藏 0

问题

  1. mysql里存的是json编码后的字符串,其中中文会被转为unicode码,所以直接查询是查询不到的。
  2. mysql里的查询如 like "%\u6211\u662f%" 也是不会有结果的,原因是反斜线被mysql转义了, 需要如下的格式才能查询: like "%\\\\u6211\\\\u662f%" (四个反斜杠) 注意:mysql5.7版以后增加了直接对json格式的支持.

解决方式:

  1. 写二个php函数对要查询的字符串进行unicode编码或解码(这里,我们利用了json_encode这个函数)

  对关键字进行unicode编码
  @param  string $keyword  要编码的字符串关键字
  @return string         str

 function unicode_encode($keyword=""){
   if($keyword=="") return "";
   $bb=json_encode(array($keyword));
   return preg_replace("/^\[\"|\"\]$/","",$bb);
}



 对关键字进行unicode解码
 @param  string $keyword   unicode编码后的字符串
 @return string           str

 function unicode_decode($keyword=""){
   if($keyword=="") return "";
   $keyword="[\"".$keyword."\"]";
   $aa=json_decode($keyword,true);
   return $aa[0];
}

  1. 对转化成unicode后的字符串,替换为4个反斜杠.
$keyword=preg_replace("/\\/","\\\\","\u5a74\u513f");
  1. 用最后得到的keyword去mysql数据库里like查询或其它查询就可以得到预期的结果了。

© 著作权归作者所有

共有 人打赏支持
jroam
粉丝 0
博文 5
码字总数 1957
作品 0
成都
架构师
数据库记录转换成json格式

<?php / 1.在company数据user表中取出10条数据,保存为数组 2.在将数组转化为json格式,传递给js 3.用json解析器将传递过来的json字符串转化为json对象, 4.用document.write输出语句打印在页...

zyt_1978
2016/06/11
29
0
robbe+base64+Mysql简易有效的php全文索引实现

确实有很多方法来给php提供全文索引功能。 例如: 1。solr或者lucene,(需要安装对应的php客户端扩展)。 2。sphinx 3。基于任何一个数据库(key/value的最好)的模拟实现。 4。Mysql的全文索...

狮子的魂
2013/03/01
0
2
为您的 web 项目构建一个简单的 JSON 控制器

无论您的项目使用的是哪种数据库后端,JavaScript Object Notation (JSON) 控制器都能简化您的开发工作。本文将带领您建立一个能够增强您的下一个开发项目的非常基础的 JSON 控制器。 您的下...

IBMdW
2011/06/21
341
1
PHP编程中10个最常见的错误

错误1:foreach循环后留下悬挂指针 在foreach循环中,如果我们需要更改迭代的元素或是为了提高效率,运用引用是一个好办法: $arr = array(1, 2, 3, 4); foreach ($arr as &$value) { $value...

荔枝壳
2014/08/01
283
1
PHP编程问题集锦

1. Win32下apache2用get方法传递中文参数会出错 test.php?a=你好&b=你也好 传递参数是会导致一个内部错误 解决办法:"test.php?a=".urlencode(你好)."&b=".urlencode(你也好) 2. win32下的ses...

晨曦之光
2012/03/09
46
0

没有更多内容

加载失败,请刷新页面

加载更多

一次由HandlerInterceptor进行的深入思考

HandlerInterceptor 是SpringFramework为我们提供的拦截器,一般我们可以用来鉴权或者日志记录等。 它是一个interface,主要方法有: /** * Intercept the execution of a handler. Called...

kipeng300
33分钟前
1
0
cmd中查询mysql表出现中文乱码

问题:在pycharm中正常的fetchall拉取数据,能够正常显示,而在cmd中直接select却出现中文乱码。 解决思路:右键查看cmd命令窗口属性得到,cmd窗口默认编码是gbk(如下图所示),而设置的mys...

fang_faye
59分钟前
2
0
centOS 安装Python3与python2并存

centOS 安装Python3与python2并存 如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环...

MedivhXu
今天
2
0
Spring JdbcTemplate模板模式与回调结合分析

在看Spring的JdbcTemplate的时候,看到其将模板模式和回调模式结合使用的实现,可以精妙的解决很多的问题。详见Spring中涉及的设计模式总结中的关于模板模式和回调模式结合的具分析,本文利用...

宸明
今天
1
0
docker update:更新一个或多个容器的配置

更新容器的配置 docker update:更新一个或多个容器的配置。 具体内容请访问:https://docs.docker.com/engine/reference/commandline/update/#options 语法:docker update [OPTIONS] CONTA...

lwenhao
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部