今天尝试了一下用PHP连接MSSQL2008,总结一下。
1.首先得安装php扩展
由于php5.2中php_mssql.dll是给MSSQL2000用的,要使用MSSQL2005/2008必须得下载SQL Server Driver for PHP扩展包,尝试了N次在microsoft网站上看的是3.0版本,下载下来之后是个exe文件,还打不开,很是头痛。于是只好退求其次去找2.0版,终于在csdn上面找到了,居然标价要5点积分(上传这个资源的人真是太黑了。。。),没办法只好怀着心痛痛下载下来。打开压缩包,里面有很多dll文件。
从里面找到适合你当前php版本的扩展: php5.2的就用带有"52"字样的文件,php5.3版本的就用带有"53"字样的文件; 如果你的WEB服务器用的是IIS,就使用vc9的,如果是Apache就用vc6编译的;
比如:
我当前的开发环境是WAMP(php5.2.9,apache2.2.21),那么我就选用php_sqlsrv_52_ts_vc6.dll , php_pdo_sqlsrv_52_ts_vc6.dll 这两个文件,复制到php的扩展文件目录ext/下面。
2.然后就是修改php.ini文件了,
在php.ini文件中加上如下两行:
extension=php_sqlsrv_52_ts_vc6.dll
extension=php_pdo_sqlsrv_52_ts_vc6.dll
将 ;extension=php_pdo.dll 前面的;去掉。重新启动APACHE。
3.再写到MSSQL2008的连接的php类来验证一下
下面是我写的一个简单类,写只了一个查询记录的方法,其它的功能大家可以自己添加。
<?php
/*
例子:
//定义参数
$db_info=array(
'server'=>'WIN-0G9L24HRC8S', //数据库服务器地址
'user'=>'abc', //数据库用户名
'password'=>'abc', //数据库用户密码
'databases'=>'CRS主数据库', //数据库名
);
//数据库对象
$db = new mssql2008($db_info);
//取得记录
$rs = getrs($sql='SELECT TOP 100 * FROM caf_AppModule');
*/
class mssql2008
{
private $db; //数据库操作对象
//数据库信息
private $db_info=array(
'server'=>'localhost',
'user'=>'sa',
'password'=>'sa',
'databases'=>'',
);
//初使化连接数据库
public function __construct($info=array())
{
$db_info = array("UID"=>$info['user'], "PWD"=>$info['password'], "Database"=>$info['databases']);
$db = sqlsrv_connect( $info['server'], $db_info);
if($db===false){
echo "连接失败!";
die( print_r( sqlsrv_errors(), true));
}else{
$this->db_info = $info;
$this->db = $db;
}
}
//执行sql语句
public function query($sql='')
{
$sql = trim($sql);
if(!isset($this->db) || $sql==''){
return array();
}
$query = sqlsrv_query($this->db,$sql);
if($query === false){
echo "Error in query preparation/execution.\n";
die( print_r( sqlsrv_errors(), true));
}else{
return $query;
}
}
//查询记录
public function getrs($sql='')
{
$query = $this->query($sql);
$rs = array();
//遍历出记录集
while($row = sqlsrv_fetch_array($query,SQLSRV_FETCH_ASSOC)){
$rs[] = $row;
}
return $rs;
}
}
?>
对了,差点忘了一件大事: SQL Server Driver for PHP 2.0.rar 扩展包, 我把它传到我空间来了这样可以随意下载吧,不然大家就得去csdn花5点积分了。。。 (看出我是多好的人了吧。^-^!)