PHP 5.3.x连接SQL Server 2005的教程

2013-01-30 23:50:34来源:新猪猪作者:

php5.3.x不再支持php_mssql.dll 拓展库了,及时使用php5.2.x中的php_mssql.dll 也无法使用。 微软专门为PHP出了个SQL Server的扩展(Windows版本的),对于Windows下使用php开发SQL Server应用来说,这个扩展有利于

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.2.x本身有个php_mssql.dll的扩展用来连接Sql server,但是貌似这个dll只是用来连接低版本 Sql server的(2000以下版本),在Sql server 
2005及以上版本则根本无法使用mssql_connect连接到数据库。

先到微软网站下载 SQL Server Driver for PHP :http://www.microsoft.com/downloads/details.aspx?familyid=CCDF728B-1EA0-48A8-A84A-5052214CAAD9&displaylang=en , 这是一个自解压的EXE文件,解压缩后你会得到这么几个文件:

\

其中的52、53表示就是php的5.2.x和5.3.x 版本,选择跟你php版本相匹配的;选择vc6或vc9的主要看你使用的是什么web服务器软件,如果使用的是IIS那就选择vc9的,如果是Apache则选择vc6的至于ts和nts,就要看你安装的php版本是线程安全版的还是非线程安全版,ts是线程安全,nts是非线程安全比如我的配置是IIS FastCgi php-5.3.2-nts-Win32-VC9-x86,那么就应该选择php_sqlsrv_53_nts_vc9.dll 文件并把它放到php安装目录的ext目录下,并在php.ini中添加 extension=php_sqlsrv_53_nts_vc9.dll 接下来重新启动IIS 并运行phpinfo.php,来查看phpinfo的配置信息,如果看到下图信息,则说明可添加成功,您的php5.3.x可以链接sql server了。

\

另外注意的是,如果使用这个扩展连接Sql server 2005以上版本的sql server(如sql server 2008),你还需要在机器上先安装 SQL Server Native Client :http://download.microsoft.com/download/0/E/6/0E67502A-22B4-4C47-92D3-0D223F117190/sqlncli.msi

这个扩展为php新增了一系列sqlsrv_开头的函数,函数参考如下:

  • sqlsrv_begin_transaction
  • sqlsrv_cancel
  • sqlsrv_client_info
  • sqlsrv_close
  • sqlsrv_commit
  • sqlsrv_configure
  • sqlsrv_connect
  • sqlsrv_errors
  • sqlsrv_execute
  • sqlsrv_fetch
  • sqlsrv_fetch_array
  • sqlsrv_fetch_object
  • sqlsrv_fetch_metadata
  • sqlsrv_free_stmt
  • sqlsrv_get_config
  • sqlsrv_get_field
  • sqlsrv_has_rows
  • sqlsrv_next_result
  • sqlsrv_num_fields
  • sqlsrv_num_rows
  • sqlsrv_prepare
  • sqlsrv_query
  • sqlsrv_rollback
  • sqlsrv_rows_affected
  • sqlsrv_send_stream_data
  • sqlsrv_server_info

更多详细的说明可以在刚才的自解压的文件中有个 SQLServerDriverForPHP.chm 帮助文件中可以找到打开后点击API Reference节点点击Example Application 节点可以看到php程序范例。是不是很简单?跟平时用的mysql、mssql函数差不多的。

我在用到了php_pdo_sqlsrv_53_ts_vc9.dllphp_sqlsrv_53_ts_vc9.dll 这2个文件

测试示例如下:

$serverName = "(local)\sqlexpress";
$connectionOptions = array("UID"=>"sa","PWD"=>"abc123","Database"=>"数据库名");
$conn = sqlsrv_connect( $serverName, $connectionOptions);
if( $conn === false ){
  die('不能打开连接');
 }
$tsql = "SELECT TOP 3 * FROM Company";//注意,这里是mssql,不能用limit
$cursorType = array("Scrollable" => SQLSRV_CURSOR_KEYSET);
$result = sqlsrv_query($conn, $tsql, $params, $cursorType);
if ( $result === false){
 print_r(sqlsrv_errors());exit;
}

if(sqlsrv_has_rows($result))
{
 $rowCount = sqlsrv_num_rows($result);
 while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC))
 {
  echo iconv("gb2312",   "utf-8", $row['Name']) ;//连接的mssql数据库肯定是中文的,需要转码

 }
}
else
{
 echo '没有数据';
}

关键词:PHPSQLServer

赞助商链接: