|
本帖最后由 周大胖子 于 2019-4-12 14:37 编辑
现象1
在快捷搜索时:
搜索栏添加条件为中文 则没有返回结果,在搜索栏添加英文与数字 则会有返回结果;
测试1: 在已知的phpmyadmin 中 输入 SELECT * FROM `xy_jiandi` WHERE "name" like '%肖勇%';
结果正确;
测试2: 已更改 my.ini 添加了两句编码:[已重启]
character-set-server = utf8
character_set_client = utf8
测试3: 已知 数据库字符集正确 、 表字符集正确、字段值字符集正确、都为utf-8 ;
测试4:在服务器上单独写一个 like 中文搜索 得到的结果是正确的;
$name = '黄俊';
$where = array(
'name'=>array(
// 'like','黄俊'
'like','%'.$name.'%'
)
);
$dbname = 'jiandi';
$req = M($dbname)->where( $where )->field('id,name,cid')->select();
测试5:怀疑是接收值的问题
$name = $_REQUEST['name'];
$where = array(
'name'=>array(
'like','%'.urldecode(trim($name)).'%'
)
);
$dbname = 'jiandi';
$req = M($dbname)->where( $where )->field('id,name,cid')->select();
排除【所用函数、转化、接收到后的中文的变化 问题】
怀疑是 在 phone 等字段搜索中文时 导致出错
搜索语句: SELECT * FROM `xy_jiandi` WHERE "name" like '%肖勇%';
SELECT * FROM `xy_jiandi` WHERE name like '%常%';
"_complex" => array (
"cid"=> array("like" , "%肖勇%" ),
"name"=> array("like" , "%肖勇%" ),
"username"=> array("like" , "%肖勇%" ),
"phone"=> array("like" , "%肖勇%" ),
"laiyuan"=> array("like" , "%肖勇%" ) ,
"jsdate"=> array("like" , "%肖勇%" ),
"_logic"=> "or"
)
经过测试得知: 当jsdate 被注释时 是可以进行查询的;
已知 jsdate 是 date 的数据
度娘说:mysql 5.5 以上版本 date 类型数据 在使用 'like','%中文%' 是不被允许的;
需要再加一个申明
参考网址: https://blog.csdn.net/u010416101/article/details/63766304
|
|