PHP部分问题的总结

一、php连接sql sever 2005 中文编码转换问题。

  这个问题是近期做Yii项目遇到的,而且php项目中用sql server做数据库,就是一个很坑的事,但没办法啊,客户是大爷,得听他的。(随便吐槽一下),回归正题。

  解决中文数据插入sql server 数据库乱码问题,我想到了三种方法,具体的介绍如下:

    1、直接将执行的sql语句进行编码。由UTF-8编码转成GBK编码。

$sql = 'INSERT INTO '.$params['table'].'('.$params['field'].') '.$params['value'];
$sql = iconv('utf-8', 'gbk', $sql);//将sql语句转码

/**
*
*以上代码还没有拼接数据,所以我们还得把数据进行转码
*/
$binds = iconv('utf-8', 'gbk', $binds);

/**
 *
 *执行sql语句
 */

Yii::app()->db->createCommand($sql)->bindValues($binds)->execute();

  2、把表单数据打包成数组,进行编码转换

1 public function changeIconv(array $data){
2     $arr = array();
3     foreach($data as $key=>$val){
4         $arr[$key] = iconv('utf-8', 'gbk', $val);
5     }
6     return $arr;  
7

  3、直接在获取表单数据时就进行编码转换

 1 /**
 2  * [RQP 获取参数值]
 3  * @param     [type]                  $params  [参数名]
 4  * @param     string                   $default [默认值]
 5  * @param     boolean                $isIconv [是否转码 false 默认不转码]
 6  */
 7 protected function RQP($params, $default = '', $isIconv = false) {
 8     if ($isIconv) {
 9         $data = Yii::app()->request->getParam($params, $default);
10     $data = iconv('utf-8', 'gbk', $data);
11     return $data;
12     }
13     return Yii::app()->request->getParam($params,$default);
14 }
15 /************获取参数*******************/
16 private function getParams(){
17     $user = $this->RQP('username', '', true);   
18 }

个人喜欢用第三种,只要封装好之后,不管那一个数据添加功能都可以用

 

 

posted @ 2017-08-11 16:11  Trimr  阅读(168)  评论(0)    收藏  举报