文档章节

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

jroam
 jroam
发布于 2017/04/09 15:15
字数 289
阅读 82
收藏 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
成都
架构师
私信 提问
robbe+base64+Mysql简易有效的php全文索引实现

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

狮子的魂
2013/03/01
0
2
PHP编程问题集锦

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

晨曦之光
2012/03/09
130
0
数据库记录转换成json格式

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

zyt_1978
2016/06/11
29
0
为您的 web 项目构建一个简单的 JSON 控制器

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

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

错误1:foreach循环后留下悬挂指针 在foreach循环中,如果我们需要更改迭代的元素或是为了提高效率,运用引用是一个好办法: 这里有个问题很多人会迷糊。循环结束后,$value并未销毁,$valu...

荔枝壳
2014/08/01
295
1

没有更多内容

加载失败,请刷新页面

加载更多

iOS个人中心渐变动画、微信对话框、标签选择器、自定义导航栏、短信验证输入框等源码

iOS精选源码 简单的个人中心页面-自定义导航栏并予以渐变动画 程序员取悦女票的正确姿势---Tip1(iOS美容篇) iOS 前台重启应用和清除角标的问题 微信原生提醒对话框3.0 JHLikeButton - 有趣...

Android爱开源
6分钟前
0
0
Yii2使用驼峰命名的形式访问控制器

yii2在使用的时候,访问控制器的时候,如果控制器的名称是驼峰命名法,那访问的url中要改成横线的形式。例如: public function actionRoomUpdate(){//}//访问的时候就要www.test.co...

dragon_tech
9分钟前
0
0
Navicat使用教程:使用Navicat Query Analyzer优化查询性能(第2部分)

下载Navicat Monitor最新版本 Navicat Monitor 是一套安全、简单而且无代理的远程服务器监控工具。它具有强大的功能使你的监控发挥最大效用。受监控的服务器包括 MySQL、MariaDB 和 Percona ...

电池盒
15分钟前
0
0
Python3 读写utf-8文本文件

with open('testRead.txt', 'r', encoding='utf-8') as f: for each_line in f: Passwith open('testWrite.txt', 'w', encoding='utf-8') as f: f.write('写入的内容'......

编程老陆
18分钟前
0
0
Linux syslog相关函数详解

介绍 syslog是Unix系统的日志系统。可以将日志记录在本地系统中。 一个完整的syslong日志包含如下信息:程序模块 | 严重性 | 时间 | 主机名 | 进程名 | 进程ID | 正文。 syslong相关函数 1....

RongJinhui0
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部