设为首页 加入收藏

TOP

关于TP3.2框架读取Sql server中文字段数据以及处理乱码的一些小心得
2019-08-23 00:38:35 】 浏览:19
Tags:关于 TP3.2 框架 读取 Sql server 文字 数据 以及 处理 乱码 些小 心得

最近要做一个项目,需要使用TP3.2框架,之前什么也不会,就硬着头皮上了,结果真的闹了挺多emmmmmm挺低级的错误,就像SQL Server中文字段的读取,一开始我是照着读取英文字段的格式来写的,在Model层里

 public function getAdminByUsername($username='') {
        $res = $this->_db->where('username="'.$username.'"')->select();
        return $res;
    }

然后我试着传了一个中文值 '欢送' 进去,但是这样做的结果

提示列名‘欢送’无效,我照着提示的错误去搜索,但是搜索到的结果跟我想要的并不一样,我觉得我的格式没问题啊,输入的字符串,所以在where里面也是做了对应的处理的

我找了一天多也没找到解决方法,就很难过。

最后发现错误的原因比较偶然,我在四处搜索时候看到了这个,忘了是哪里看到的了

$map['acct']=acct;
$res=$this_db->where($map)->select(); 

然后模仿它的格式,把自己的代码改成这样

 public function getAdminByUsername($username='') {
        $map['J名']=$username;
        $res = $this->_db->where($map)->select();
        return $res;
    }

就是把中文字段存入到数组的值里面去,然后放入where中,这样就可以读出数据来了。但是读出来的数据,用var_dump输出,一般的话要么字段乱码数据不乱码,要么数据乱码字段不乱码。这个时候需要用两重foreach进行转码,把对应乱码的数据转码就正常了

foreach ($result as $key => $value) {
            foreach ($value as $k1 => $v1) {
                $k1=iconv("GBK","UTF-8",$k1);
                $arr[$key][$k1]=$v1;
            }
        }

函数主体是这样,在读完数据以后调用一次函数,就可以解决乱码了

 


 

这两个问题困扰了我一个星期,现在想想,还是自己真的对TP3.2框架一点都不了解才会这样,很基础的错误,在这里写出来希望以后看到自己的文章还会想起这段无头苍蝇乱飞的日子

2018-11-22

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Linux下Python安装完成后如何使用.. 下一篇[PHP]代码执行和生命周期

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目