php如何连接sql server

 更新时间:2015年10月16日 11:26:24   投稿:lijiao  
这篇文章主要介绍了php连接sql server的方法,在连接过程中遇到的问题以及解决方法,需要的朋友可以参考下

说明:
  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文件,解压缩后你会得到这么几个文件:

其中的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这个属性如下图:

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

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实现singleton()单例模式实例

    php实现singleton()单例模式实例

    这篇文章主要介绍了php实现singleton()单例模式的方法,以实例形式简单讲述了单例模式的实现过程,需要的朋友可以参考下
    2014-11-11
  • mcrypt启用 加密以及解密过程详细解析

    mcrypt启用 加密以及解密过程详细解析

    Mcrypt库支持20多种加密算法和8种加密模式,具体可以通过函数mcrypt_list_algorithms()和mcrypt_list_modes()来显示
    2013-08-08
  • php获取服务器信息的实现代码

    php获取服务器信息的实现代码

    php获取服务器信息的一段代码,包括获取mysql数据库版本信息、GD库信息、php上传相关信息等。有需要的朋友,可以参考下
    2013-02-02
  • PHP简单创建压缩图的方法

    PHP简单创建压缩图的方法

    这篇文章主要介绍了PHP简单创建压缩图的方法,通过自定义函数实现压缩图像的功能,涉及php图片的读取与图形图像的创建相关技巧,需要的朋友可以参考下
    2016-08-08
  • PHP move_uploaded_file() 函数(将上传的文件移动到新位置)

    PHP move_uploaded_file() 函数(将上传的文件移动到新位置)

    这篇文章主要介绍了PHP move_uploaded_file() 函数,其实就是将上传的文件移动到新位置,需要的朋友可以参考下
    2018-03-03
  • php模块memcache和memcached区别分析

    php模块memcache和memcached区别分析

    谈及php搭配memcached使用,已经是老生常谈的问题。但是有一些细节,不见得人人清楚。比如说php的模块memcache和memcached有什么区别等。下面我就简单介绍一下。
    2011-06-06
  • PHP实现word转pdf的两种方式(有用!)

    PHP实现word转pdf的两种方式(有用!)

    最近遇到一个需求,将word文件转换成pdf,辗转了一上午终于搞定了,下面这篇文章主要给大家介绍了关于PHP实现word转pdf的两种方式,需要的朋友可以参考下
    2022-09-09
  • PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    中文字符编码研究系列第一期,PHP函数篇详解十进制、二进制、八进制和十六进制互相转换函数说明,主要掌握各进制转换的方法,以应用于实际开发
    2011-12-12
  • 使用PHP强制下载PDF文件示例

    使用PHP强制下载PDF文件示例

    当需要下载一个PDF文件时,如果不经处理会直接在浏览器里打开PDF文件,然后再需要通过另存为才能保存下载文件,下面通过PHP来实现直接下载PDF文件
    2014-01-01
  • smarty section简介与用法分析

    smarty section简介与用法分析

    section的产生是为解决foreach的不足的,与foreach一样,它用于设计模板内的循环块,它较为复杂,可极大程序上满足程序需要,所以在程序中我习惯使用它而不使用foreach
    2008-10-10

最新评论