php如何连接sql server


Posted in PHP onOctober 16, 2015

说明:
  1:PHP5.2.x本身有个php_mssql.dll的扩展用来连接Sql server,但是这个dll只是用来连接低版本 Sql server的(2000以下版本),在Sql server 2005及以上版本无法使用mssql_connect连接到数据库。
  2:php5.3.x不再支持php_mssql.dll 拓展库了,及时使用php5.2.x中的php_mssql.dll也无法使用。 微软专门为PHP出了个SQL Server的扩展(Windows版本的),对于Windows下使用php开发SQL Server应用来说,这个扩展有利于利用SQL Server来开发php平台连接sql server数据库管理系统。
一、php5.3以下的版本连接sql server
5.3以下的版本扩展里面自带一个php_mssql.dll;接数据库的扩展,可以利用这个扩展链接数据库,(只限于链接低版本数据库)。
具体的步骤如下:
1:首先安装sql server,超级不好安装,我之前安装的是2008版本的,Windows过期后就不能用了,然后重装还装不上,最后重装系统才装上
2:确定SQL装的时候用的是混合认证模式,或SQL验证模式,然后打开php的配置文件(php.ini),开启mssql扩展 (extension=php_pdo_mssql.dll前面的分号去掉)并且需要把mssql.secure_connection = On 重启后生效。
如果比较顺利的话已经可以连接数据库了,如果连不上就需要继续低下的配置:
3: 检查ntwdblib文件的版本(php/下面和Apache/下面)下载正确的版本的 ntwdblib.dll(2000.80.194.0)覆盖现有的DLL文件,(把ntwdblib.dll,php_mssql.dll 复制到system32目录中也可以)ntwdblib.dll 用于PHP连接MSSQL2005或2008的驱动文件。
4:测试连接:mssql_connect('localhost,1433', '用户名', '密码');
二、php5.3+连接sql server
其 实5.3以下的php版本已经很少用了,况且安全性和兼容性都不好,所以高版本的php还是比较常见的。实践证明低版本的php连接数据库成功率比较低 (2005以上的版本几乎不能使用),推荐使用php5.3+ php使用微软专门的扩展 SQLSRV 来连接sqlserver数据库
步骤如下:
1:先到微软网站下载 SQL Server Driver for PHP 是一个自解压的 EXE文件,解压缩后你会得到这么几个文件:

php如何连接sql server

其中的52、53表示就是php的5.2.x和5.3.x 版本,选择跟你php版本相匹配的;vc6或vc9的选择要看你使用的是什么web服务器软件,如果使用的是IIS那就选择vc9的,如果是Apache 则选择vc6的,ts和nts的选择要看你安装的php版本是线程安全版的还是非线程安全版,ts是线程安全,nts是非线程安全。
如果不知道可以在phpinfo里看Zend Extension Build这个属性如下图:

php如何连接sql server

2:将扩展拷贝到拷到php/ext目录下,在php.ini文件,添加一下代码:
extension=在ext下的pdo扩展(用于pdo)
extension=在ext下的扩展
3:重启服务器,打开phpinfo();看到以下状态就证明添加扩展成功,

php如何连接sql server

4:连接测试:

<?php
  $serverName = "(local)";
  $connectionInfo = array("UID"=>"sa","PWD"=>"admin","Database"=>"db_online");
  $conn = sqlsrv_connect( $serverName, $connectionInfo);
  if( $conn ){
     echo "Connection established.\n";
  }else{
     echo "Connection could not be established.\n";
     die( var_dump(sqlsrv_errors()));
  }
  sqlsrv_close( $conn);
?>

注意这里的连接不是用mssql_connect而是用sqlsrv_connect,在这个版本中,还有几个函数:
这个扩展为php新增了一系列sqlsrv_开头的函数,常用的如下:

sqlsrv_connect
sqlsrv_close
sqlsrv_commit
sqlsrv_errors
sqlsrv_fetch
sqlsrv_fetch_array
sqlsrv_fetch_metadata
sqlsrv_num_rows
sqlsrv_query
sqlsrv_rollback
sqlsrv_rows_affected
. . .
另外注意的是,如果使用这个扩展连接Sql server 2005以及以上版本的sql server(如sql server 2008),你还需要在机器上先安装 SQL Server Native Client
不然会出现如下错误:

array
0 =>array
0 =>string'IMSSP'(length=5)
    'SQLSTATE' =>string'IMSSP'(length=5)
1 =>int-49
    'code' =>int-49
2 =>string'This extension requires the Microsoft SQL Server 2012 Native Client. Access the     following URL to download the Microsoft SQL Server 2012 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712'(length=216)
'message' =>string'This extension requires the Microsoft SQL Server 2008 Native Client. Access the following URL to download the Microsoft SQL Server 2008 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712'(length=216)
1 =>array
0 =>string'IM002'(length=5)
    'SQLSTATE' =>string'IM002'(length=5)
1 =>int0
    'code' =>int0
2 =>string'[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序'(length=71)
'message' =>string'[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序'(length=71)
. . . .

解决方法:需要安装SQL Server 2008 Native Client ODBC Driver,下载安装文件sqlncli.msi,安装后就可以了。

以上就是php连接sql server的方法,希望对大家解决类似问题有所帮助。

PHP 相关文章推荐
PHP的FTP学习(四)
Oct 09 PHP
PHP初学入门
Nov 19 PHP
php 攻击方法之谈php+mysql注射语句构造
Oct 30 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
Jul 01 PHP
PHP __autoload函数(自动载入类文件)的使用方法
Feb 04 PHP
header中Content-Disposition的作用与使用方法
Jun 13 PHP
PHP获取文件后缀名的三个函数
Oct 15 PHP
解析php中的escape函数
Jun 29 PHP
PHP获取页面执行时间的方法(推荐)
Dec 10 PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 PHP
php实现文件预览功能
May 23 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
Jun 13 PHP
Apache启动报错No space left on device: AH00023该怎么解决
Oct 16 #PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
Oct 16 #PHP
全面解读PHP的人气开发框架Laravel
Oct 15 #PHP
php示例详解Constructor Prototype Pattern 原型模式
Oct 15 #PHP
PHP经典面试题之设计模式(经常遇到)
Oct 15 #PHP
PHP面试题之文件目录操作
Oct 15 #PHP
php cli配置文件问题分析
Oct 15 #PHP
You might like
php木马攻击防御之道
2008/03/24 PHP
php反弹shell实现代码
2009/04/22 PHP
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
PHP可变函数学习小结
2015/11/29 PHP
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
jquery multiSelect 多选下拉框
2010/07/09 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
js+HTML5实现视频截图的方法
2015/06/16 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
vue配置多页面的实现方法
2018/05/22 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
2019/03/22 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
2014/05/06 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
KLOOK客路:发现更好玩的世界,预订独一无二的旅行体验
2016/12/16 全球购物
印尼综合在线预订网站:Tiket.com(机票、酒店、火车、租车和娱乐)
2018/10/11 全球购物
淘宝好评语大全
2014/05/05 职场文书
专家推荐信模板
2014/05/09 职场文书
求职教师自荐书
2014/06/19 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
导游词之日本富士山
2020/01/06 职场文书
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python
Mysql事务索引知识汇总
2022/03/17 MySQL