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 相关文章推荐
APMServ使用说明
Oct 23 PHP
实例(Smarty+FCKeditor新闻系统)
Jan 02 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
Jun 26 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
Jul 15 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
PHP输出一个等腰三角形的方法
May 12 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
Nov 07 PHP
[原创]php正则删除html代码中class样式属性的方法
May 24 PHP
PHP不使用内置函数实现字符串转整型的方法示例
Jul 03 PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 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 用数组降低程序的时间复杂度
2009/12/04 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
2011/05/25 PHP
PHP下判断网址是否有效的代码
2011/10/08 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
PHP遍历数组的方法汇总
2015/04/30 PHP
Javascript 面向对象 重载
2010/05/13 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
jQuery通过Ajax返回JSON数据
2015/04/28 Javascript
Javascript实现单例模式
2016/01/24 Javascript
JavaScript的React框架中的JSX语法学习入门教程
2016/03/05 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
2020/05/15 Javascript
python自定义线程池控制线程数量的示例
2019/02/22 Python
python实现抖音点赞功能
2019/04/07 Python
python生成器用法实例详解
2019/11/22 Python
python实现超级马里奥
2020/03/18 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
python如何调用php文件中的函数详解
2020/12/29 Python
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
英国健身超市:Fitness Superstore
2019/06/17 全球购物
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
会计主管岗位职责范文
2013/11/08 职场文书
写好自荐信要注意的问题
2013/11/10 职场文书
2014端午节活动策划方案
2014/01/27 职场文书
2014年最新大专生职业生涯规划书范文
2014/09/13 职场文书
出国签证在职证明
2014/09/20 职场文书
住宿生擅自离校检讨书
2014/09/22 职场文书
2015感人爱情寄语
2015/02/26 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js
Python基础之元组与文件知识总结
2021/05/19 Python
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python