PHP连接sqlserver的两种方法,向sqlserver2000中写入数据,中文乱码
项目环境是php5.3.28 项目用的ThinkPHP3.2.3 已经mysql5.5数据库,要和另一个项目对接,需要连接sqlsever2000数据库进行一些操作。
第一种用php自带扩展连接数据库:
1、首先要下载
php_pdo_sqlsrv_53_ts_vc9.dll
php_sqlsrv_53_ts_vc9.dll
下载地址:http://share.weiyun.com/dc589fc41567ce6e3fb8b131ec1553ff
这两个文件
2、复制到PHP目录下的ext目录下
3、修改PHP目录下的php.ini文件:
在文件最后加上
extension=php_sqlsrv_53_ts_vc9.dll
extension=php_pdo_sqlsrv_53_ts_vc9.dll
4、然后查找
mssql.secure_connection
把值改为on
保存php.ini文件
5、重启apache
php里面的连接数据代码
$model = new Model();
$conn=$model->db(1,"sqlsrv://登录名称:密码@服务器host:1433/数据库名称");
$sql='select id,code from t_user';
$res=$conn->query($sql);
参考网址(转):http://www.cnblogs.com/phpyangbo/p/thinkphp-sqlserver-lianjie.html
我用这种方法遇到问题了,在我本地环境上面可以正常使用sqlserver数据库,
到了服务器上面能连接上数据库,可是执行不了sql,折腾了两天没找到什么问题然后就用第二种方法连接了
第二种 用ODBC连接sqlserver数据库
1.配置SQL Server ODBC数据源
我的系统是64位的,就得配64位的数据源
(1)运行C:\Windows\SysWOW64\odbcad32.exe
(2)在【ODBC数据源管理器】对话框中,单击【系统DNS】标签,单击【添加】按钮,弹出【创建新数据源】对话框
(3)在【创建新数据源】对话框中,在驱动程序序列表中选择【SQL Server】,单击【完成】按钮,弹出【创建到SQL Server的新数据源】对话框
(4)在【创建到SQL Server的新数据源】对话框中,在【名称(M)】文本框中输入数据源名称:(可自己自由命名,读取性好就行)php连接的时候会用到,
在【服务器(S)】文本框中选择服务器名为:要是连接本地的写local,连接远程的写远程服务器的ip,单击【下一步】按钮,进入【创建到SQL Server的新数据源】对话框
(5) 在【创建到SQL Server的新数据源】对话框中,选择【使用用户输入登陆ID和密码的SQL Server验证(s)】单选按钮,在【登陆ID(l)】文本框内输入SQL Server身份验证的登录名:sa,
在【密码】文本框内输入设定的密码,单机【下一步】按钮,弹出【创建到SQL Server的新数据源】对话框
(6)在【创建到SQL Server的新数据源】对话框中,勾选【更改默认的数据库为】复选框,将默认的数据库选择为自己要连接的数据库,单击【下一步】按钮,弹出【创建到SQL Server的新数据源】对话框
(7)在【创建到SQL Server的新数据源】对话框中,采用默认设置。单击【完成】按钮,弹出【ODBC Microsoft SQL Server安装】对话框
(8)在【ODBC Microsoft SQL Server安装】对话框中,单击【测试数据源】按钮。连接成功会显示的,然后点确定就行了,数据源就配好了。
2.php用数据源连接sqlserver数据库
(1)在 php.ini 中将 extension=php_pdo_odbc.dll 前的分号去掉,并重启 apache.
(2)php脚本连接代码
$servername="数据源的名称";
$conn=odbc_connect($servername,'数据库登录名称','登录密码',SQL_CUR_USE_ODBC);
$sql="SELECT * FROM user";
$result=odbc_exec($conn,$sql);
可参考(转):http://blog.sina.com.cn/s/blog_a07a3f180101dg4g.html
以前做项目没有连接过sqlserver数据库,第一次连接,折腾了三天才连接上,总结下经验,以后在链接的是不用到处找了
补充:
PHP向sqlserver2000中写入数据,中文乱码
首先:查看SQLserver编码格式的SQL语句为:
SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')
查询结果的含义:
936 简体中文GBK
950 繁体中文BIG5
437 美国/加拿大英语
932 日文
949 韩文
866 俄文
65001 unicode UFT-8
PHP使用UTF-8编码。SQL Server 2008使用默认的GBK编码。这样,向数据库写入中文是会出现乱码的。
解决办法:
在执行查询语句之前将查询语句及所要插入的数据转化为GBK编码。
$query = "INSERT INTO employees (employeeID, employeeName) VALUES ('$employeeID', '$employeeName')";
$query = iconv("utf-8", "gbk", $query);
PHP连接sqlserver的两种方法,向sqlserver2000中写入数据,中文乱码的更多相关文章
- 【java基础 13】两种方法判断hashmap中是否形成环形链表
导读:额,我介绍的这两种方法,有点蠢啊,小打小闹的那种,后来我查了查资料,别人都起了好高大上的名字,不过,本篇博客,我还是用何下下的风格来写.两种方法,一种是丢手绢法,另外一种,是迷路法. 这两种方法 ...
- ADO对Excel对象进行连接时的 两种方法区别
在通过ADO对Excel对象进行连接时(此时Excel则认为是一个数据源),需要配置对Excel数据源对应的连接串,这个连接串中包括了Provider信息(其实类似对数据库进行连接操作时,都需要指定连 ...
- (转)将access数据库迁移到SQLserver的两种方法
在实际项目使用中遇到的问题,将原文整理后以备后用. 原文地址(具体链接几次未知):http://www.jb51.net/article/41956.htm 方法1 使用ACCESS2007自带的数据 ...
- ASP 连接 MySQL 数据库两种方法
一般都是用myodbc来连接.首先,在系统中安装 Mysql 的ODBC数据库驱动.如安装稳定版本是3.51.下载地址是:http://dev.mysql.com/downloads/connecto ...
- sqlserver 删除两种方法比较
delete from tb where id=1 删除数据 truncate table tb where id=1 第一种 自增长id不会删除,第二种会删除
- Java去重字符串的两种方法以及java中冒号的使用
package com.removesamestring; import java.io.BufferedWriter; import java.util.ArrayList; import java ...
- python学习--python 连接SQLServer数据库(两种方法)
1. python 学习.安装教程参照: http://www.runoob.com/python/python-tutorial.html 2. 集成开发环境 JetBrains PyCharm C ...
- C++连接mysql数据库的两种方法
本文主要介绍了C++连接mysql数据库的两种方法,希望通过本文,能对你有所帮助,一起来看. 现在正做一个接口,通过不同的连接字符串操作不同的数据库.要用到mysql数据库,以前没用过这个数据库,用a ...
- SQLServer 批量插入数据的两种方法
SQLServer 批量插入数据的两种方法-发布:dxy 字体:[增加 减小] 类型:转载 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Ins ...
随机推荐
- U盘安装SLES的方法
安装准备: 一个4G 或 大于4G的U盘 也同样适合移动硬盘, SLES-11-DVD-i586-GM-DVD1.iso 文件1) 将U盘格式化成FAT32格式; 2) 下载 syslinux工具 h ...
- iOS开发笔记系列-基础4(变量与数据类型)
对象的初始化 对象的初始化方法一般都如下: -(id)init { self=[super init]; if(self){ ... } return self; } 这个方法首先会调用父类的初始化方 ...
- java大数总结【转】
java大数(2013长春网络赛)--hdu4762总结一下:1.java提交类要写Main.2.读取大数. Scanner read=new Scanner(System.in); BigInteg ...
- linux netlink套接字学习资料
理论: http://blog.csdn.net/unbutun/article/details/3394061 进一步深入: http://edsionte.com/techblog/archive ...
- android127 zhihuibeijing 屏幕适配
## 屏幕适配 ## 加载不同分辨率的图片是根据手机的像素来加载不同分辨率文件夹下的图片. > 先在主流屏幕来发: *(分辨率和手机屏幕大小无关), 遵循原则: 不用AbsoluteLayout ...
- [012]泛型--lambda表达式捕获
lambda表达式的捕获跟参数差不多,可以是值或者引用. 1.值捕获 与传值参数类似,采用值捕获的前期是变量可以拷贝:与参数不通透的是:被捕获的变量的值是在lambda创建时拷贝,而不是调用时拷贝. ...
- Android Service 服务(一)—— Service .
http://blog.csdn.net/ithomer/article/details/7364024 一. Service简介 Service是android 系统中的四大组件之一(Activit ...
- js调试技巧 Firefox调试技巧汇总
Firebug入门指南 : http://www.ruanyifeng.com/blog/2008/06/firebug_tutorial.html Firebug控制台详解: htt ...
- php正则测试demo、动态函数
<?php error_reporting (E_ALL); ini_set ('display_errors', 'on');?><meta http-equiv="Co ...
- Mini2440 DM9000 驱动分析(一)
Mini2440 DM9000 驱动分析(一) 硬件特性 Mini2440开发板上DM9000的电气连接和Mach-mini2440.c文件的关系: PW_RST 连接到复位按键,复位按键按下,低电平 ...