代码改变世界

php在windows下连接Microsoft SQL Server(SQLServer)

2011-08-23 17:47  o2oo  阅读(624)  评论(0编辑  收藏  举报

php中针对数据库的扩展还是相当齐全,下面主要讲讲针对Microsoft SQL Server的连接方法。适用Microsoft SQL Server的php扩展有Mssql、SQLSRV另外还有两个同时适用于其他数据库的抽象层扩展ODBC、PDO。

使用Mssql需要安装MS SQL客户端工具或者将ntwdblib.dll拷贝到system32和php安装目录下,目前php5.3以上版本不再支持Mssql扩展,可以使用它的替代版本SQLSRV,详情可访问http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx。

SQLSRV支持的操作系统有

  • Windows Server 2003 Service Pack 1
  • Windows XP Service Pack 3
  • Windows Vista Service Pack 1 or later
  • Windows Server 2008
  • Windows Server 2008 R2
  • Windows 7

使用SQLSRV扩展需要安装Microsoft SQL Server 2008 R2 Native Client下载地址:

SQLSRV包含若干驱动文件,如php_sqlsrv_52_ts_vc6.dll等,使用的时候根据自己的服务器情况开启相应的扩展,在 php.ini配置文件中的[MSSQL]部分下面加上extension=php_sqlsrv_53_ts_vc6.dll等。连接代码如下:

 1 $serverName = $serverName = "192.168.1.66"; //serverName\instanceName
2 $connectionInfo = array( "Database"=>"MyTest", "UID"=>"sa", "PWD"=>"123456");
3 $conn = sqlsrv_connect( $serverName, $connectionInfo);
4
5 if( $conn ) {
6 echo "Connection established.<br />";
7 }else{
8 echo "Connection could not be established.<br />";
9 die( print_r( sqlsrv_errors(), true));
10 }
11 $stmt=sqlsrv_query($conn,"SELECT * from test");
12
13 while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
14 var_dump($row);
15 }

对于ODBC,PHP的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。代码如下:

 1 $connection = odbc_connect("Driver={SQL Server};Server=192.168.1.66;Database=OdbcTest;", "sa", "123456");
2
3 if (!$connection)
4 {exit("Connection Failed: " . $connection);}
5
6 $sql="SELECT * FROM test";
7 $rs=odbc_exec($connection,$sql);
8 if (!$rs)
9 {exit("Error in SQL");}
10 echo "<h3>ODBC连接</h3><table><tr>";
11 echo "<th>title</th>";
12 echo "<th>content</th></tr>";
13
14 while (odbc_fetch_row($rs))
15 {
16 $compname=odbc_result($rs,"title");
17 $conname=odbc_result($rs,"content");
18 echo "<tr><td>$compname</td>";
19 echo "<td>$conname</td></tr>";
20 }
21 odbc_close($connection);

使用PDO,只需修改php.ini文件激活extension=php_pdo.dll,再开启针对mssql的extension=php_pdo_mssql.dll即可。连接代码如下:

try {
$dbh = new PDO('sqlsrv:Server=192.168.1.66;Database=OdbcTest', "sa", "123456");
$arr = $dbh->query('SELECT * from test');
$arr->setFetchMode(PDO::FETCH_NUM);

foreach($arr as $row) {
var_dump($row);
}
$dbh = null;
}
catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}

摘自:http://www.pignut.net/624 | 花生米