php 连接 mssql sql2008
摘要
1.下载微软提供的dll
下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=20098
php5.4需下载 SQLSRV30.EXE,这个exe是一个自解压文件,下载后双击选路径解压会得到一堆dll和说明文件。
2、将对应自己php版本的dll文件copy到php ext目录下
ts是指线程安全(ThreadSafe),nts是指线程不安全,得根据安装的php版本来选择,如果不确定,就分别尝试一下;
我用的php5.4,就将php_sqlsrv_54_ts.dll复制到ext目录下,
我用的php5.4,就将php_pdo_sqlsrv_54_ts.dll复制到ext目录下,
例如:D:\Program Files\PHP 5.4\ext
3、修改php.ini文件
增加二行:extension=php_pdo_sqlsrv_54_ts.dll
extension=php_sqlsrv_54_ts.dll
修改一行 : mssql.secure_connection = Off 改为on
4、重启apache
5、配置MS SQL Server2005
a、打开 SQL Server 配置管理器:SQL Server Configuration Manager,打开协议;
b、启用“Named Pipes”和“TCP/IP”,默认是已禁用的;
c、右键点击“TCP/IP”,选择“属性”,选择“IP地址”,在”ALLIP“下的“TCP动态端口”后填写1433;
d、重启SQL Server。
备注:记得开启sa登录。
6、安装Microsoft SQL Server 2012 Native Client.msi
根据自己系统在PHP服务器所在机器安装Microsoft SQL Server 2012 Native Client.msi,分X64和X86的。
下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=29065
此工具不支持XP系统哦,所以XP去用PHP5.3吧~
另外这个是安装在php环境的的服务器下面 PS:不是独立数据库服务器的请自动忽略。
7、php数据库代码
<?php /*连接数据库,5.4的函数不再是mssql_connect了:*/ $conInfo=array("Database"=>"att2008", "UID"=>"att2008", "PWD"=>"att2008"); $conn=sqlsrv_connect("127.0.0.1", $conInfo); /*判断连接成功与否:*/ if( $conn == false ) { die( print_r( sqlsrv_errors(), true)); } else { echo("yes<br>"); } $table_name = "USERINFO"; /*如果你牛叉的数据库表名是中文,记得加上这句:*/ //$table_name = iconv("UTF-8", "GB2312", "牛叉的中文表名"); /*query语句:*/ $rs=sqlsrv_query($conn, "select * from ".$table_name); if($rs == false) { echo("false<br>"); } else { while($row = sqlsrv_fetch_array($rs)) { print_r($row); } sqlsrv_free_stmt($rs); sqlsrv_close($conn); } ?>
8,至此,网上教程复制完毕,但是该方法不支持XP系统!(我使用的是phpstudy,非常便捷的一体式多合一服务)
但是该方法中开启了mssql.php,于是使用以下代码可以在XP中连接sql2008
<?php $server ="LPP-20140312390\s2008"; //服务器IP地址,如果是本地,可以写成localhost,本例是多个实例 $uid ="sa"; //用户名 $pwd ="sql2008"; //密码 $database ="test"; //数据库名称 //进行数据库连接 $conn =mssql_connect($server,$uid,$pwd) or die ("connect failed"); mssql_select_db($database,$conn); //执行查询语句 $query ="select * from demo"; $row =mssql_query($query); //打印输出查询结果 while($list=mssql_fetch_array($row)) { print_r($list); echo "<br>"; } //PDO连接不成功,没有微软的库,2012库不在支持XP // $conn = new PDO( "sqlsrv:Server=(LPP-20140312390\s2008);Database=test", "sa", "sql2008"); // $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); // $query = 'select * from demo'; // $stmt = $conn->query( $query ); // while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){ // print_r( $row ); // }
9,xp系统中连接SqlServer2008
9.1同样下载http://www.microsoft.com/en-us/download/details.aspx?id=20098
找到sqlsrv20,这里面是支持xp的DLL,支持范围包括5.3,5.2,不支持5.4,其中nt是线程安全,v6v9意思是apache是哪种语言编写的,是c++9还是c++6,这个安装的时候提示错误 就更改一个
下载Microsoft SQL Server 2008 Native Client.msi,这个是必须的
9.2重启服务器
测试代码
<?php //PDO连接方式 // $conn = new PDO( "sqlsrv:Server=LPP-20140312390\S2008;Database=CDTXYYBJP", "sa", "sql2008"); try { $conn = new PDO( "sqlsrv:Server=LPP-20140312390\S2008;Database=CDTXYYBJP", NULL, NULL); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); } catch( PDOException $e ) { die( "Error connecting to SQL Server" ); } echo "Connected to SQL Server\n"; $query = 'Select * From sysobjects '; $stmt = $conn->query( $query ); while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){ p( $row ); } // /* Specify the server and connection string attributes. */ // $serverName = "LPP-20140312390\s2008"; // $connectionInfo = array( "Database"=>"CDTXYYBJP"); // /* Connect using Windows Authentication. */ // $conn = sqlsrv_connect( $serverName, $connectionInfo); // if( $conn === false ) // { // echo "Unable to connect.</br>"; // die( print_r( sqlsrv_errors(), true)); // } // Query SQL Server for the login of the user accessing the // database. // $tsql = "SELECT CONVERT(varchar(32), SUSER_SNAME())"; // $stmt = sqlsrv_query( $conn, $tsql); // if( $stmt === false ) // { // echo "Error in executing query.</br>"; // die( print_r( sqlsrv_errors(), true)); // } // /* Retrieve and display the results of the query. */ // $row = sqlsrv_fetch_array($stmt); // echo "User login: ".$row[0]."</br>"; // /* Free statement and connection resources. */ // sqlsrv_free_stmt( $stmt); // sqlsrv_close( $conn);