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、把表单数据打包成数组,进行编码转换
public function changeIconv(array $data){
$arr = array();
foreach($data as $key=>$val){
$arr[$key] = iconv('utf-8', 'gbk', $val);
}
return $arr;
}
3、直接在获取表单数据时就进行编码转换
/**
* [RQP 获取参数值]
* @param [type] $params [参数名]
* @param string $default [默认值]
* @param boolean $isIconv [是否转码 false 默认不转码]
*/
protected function RQP($params, $default = '', $isIconv = false) {
if ($isIconv) {
$data = Yii::app()->request->getParam($params, $default);
$data = iconv('utf-8', 'gbk', $data);
return $data;
}
return Yii::app()->request->getParam($params,$default);
}
/************获取参数*******************/
private function getParams(){
$user = $this->RQP('username', '', true);
}
个人喜欢用第三种,只要封装好之后,不管那一个数据添加功能都可以用
随机推荐
- Redis的安装与使用(单节点)
IP:192.168.4.111 环境:CentOS 6.6 Redis版本:redis-3.0 (考虑到Redis3.0在集群和性能提升方面的特性,rc版为正式版的候选版,而且很快就出正式版) 安装 ...
- CentOS下安装php的mbstring扩展
php的mbstring扩展如果没有安装会导致一些问题: 例1:登陆phpMyAdmin的时候会提示没字符串编码和字符串处理库 php_mbstring,有些程序中会用到mb_substr函数没有ph ...
- 【LeetCode】206. Reverse Linked List
题目: Reverse a singly linked list. 提示: 此题不难,可以用迭代或者递归两种方法求解.记得要把原来的链表头的next置为NULL: 代码: 迭代: /** * Defi ...
- 2.如何搭建MQTT环境
1.源码下载https://github.com/andsel/moquette 注意下载2016.2版本2.idea下载http://confluence.jetbrains.com/display ...
- IOS 状态栏(UIStatusBar)
ios上状态栏指的屏幕顶端的20像素高的部分 状态栏分前景和背景两部分 前景部分:就是指的显示电池.时间等部分: 背景部分:就是显示白色或者图片的背景部分: 如下图:前景部分为黑色字体,背景部分为白色 ...
- asp.net中怎样调用存储过程和存储过程的写法(转载,留着自己看)
asp.net中怎样调用存储过程和存储过程的写法 创建一个只有输入参数的存储过程 create procedure proc_user@name varchar(20),@Password varch ...
- 【前端】一步一步使用webpack+react+scss脚手架重构项目
前言 前几天做了一个项目:[node]记录项目的开始与完成——pipeline_kafka流式数据库管理项目:因为开发时间紧迫,浅略的使用了一下react,感觉这个ui库非常的符合我的口味,现在趁着有 ...
- Vue.js入学教程
Vue.js是什么Vue.js 是用于构建交互式的 Web 界面的库.Vue.js 提供了 MVVM 数据绑定和一个可组合的组件系统,具有简单.灵活的 API.Vue.js(类似于view)是一套构建 ...
- 小解系列-自关联对象.Net MVC中 json序列化循环引用问题
自关联对象在实际开发中用的还是比较多,例如常见的树形菜单.本文是自己实际的一个小测试,可以解决循环引用对象的json序列化问题,文笔不好请多见谅,如有错误请指出,希望有更好的解决方案,一起进步. 构造 ...
- 将git版本号编译进程序
问题的提出 不管是什么版本管理工具,每一条提交记录都会有一个对应的版本号,一般是一个整数,git是一个hash字符串.不管怎样,这个版本号是唯一的,有时候我们在程序运行的时候会在日志里面输出程序的版本 ...