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中如何将数组变量写入文件
Jun 06 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
基于PHP创建Cookie数组的详解
Jul 03 PHP
使用php批量删除数据库下所有前缀为prefix_的表
Jun 09 PHP
PHP文件锁定写入实例解析
Jul 14 PHP
php使用sql server验证连接数据库的方法
Dec 25 PHP
php如何实现只替换一次或N次
Oct 29 PHP
PHP利用imagick生成组合缩略图
Feb 19 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
smarty的section嵌套循环用法示例
May 28 PHP
php 处理png图片白色背景色改为透明色的实例代码
Dec 10 PHP
php设计模式之适配器模式原理、用法及注意事项详解
Sep 24 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数组的使用方法小结
2010/09/23 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
PHP微信模板消息操作示例
2017/06/29 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
2013/02/22 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
Node.js和Express简单入门介绍
2017/03/24 Javascript
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
将angular-ui的分页组件封装成指令的方法详解
2017/05/10 Javascript
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
vscode配置vue下的es6规范自动格式化详解
2019/03/20 Javascript
了解重排与重绘
2019/05/29 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
2019/08/16 Javascript
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
科技节口号
2014/06/19 职场文书
护士医德医风自我评价
2014/09/15 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
入党宣誓大会后的感想
2015/08/10 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书
python基于机器学习预测股票交易信号
2021/05/25 Python