参考:http://www.ppkj.net/2011/06/09/php-%E8%BF%9E%E6%8E%A5sqlserver200520082008r2/
http://hi.baidu.com/xiaoma/item/82ad2ece43b83a3599b498cb
第一种方法使用php默认自带的php-mssql.dll扩展,这种只需要开启php.ini,去除“;”即可
;extension=php-mssql.dll
这种方式需要ntwdblib.dll放在c:\windows(网上有些资料说是放在System32下,试了一下好像不行)以及php安装根目录
如果无法安装,查看以下原因:
1.扩展是否已经加载,用 phpinfo()查看 php-mssql;
2.本机是否已经安装sqlserver2000-2008R2
3.有时候ntwdblib.dll(比如2000.2.8)的版本并不支持更高版本的sql server(大于2000),因此如果你的ntwdblib.dll版本过低,可以下载本站下载ntwdblib.dll,下载后在php安装目录和c:\windows下各自放一份
4.查看是否当前账户名和主机名一样了,改成不一样的,我的电脑/计算机 右键属性 —重命名计算机
5.开启sqlserver的远程连接
———————————–下面是开启sqlserver远程 2008R2下通过 其他可能会有所不同——————————————-
接下来要设置sqlserver允许远程连接,打开SQL Server Management Studio ,登陆后 ,在左侧 对象资源管理器里面,选择sqlserver实例对象(第一个),右键属性
1.安全性选项卡 里面勾选sqlserver和windows身份验证
2.连接选项卡 勾选允许远程连接
然后打开SQL Server 配置管理器
1.–>SQL Server网络配置里面,SQLEXPRESS协议(可能是其他名),右侧NamedPipes和TCP/IP都开启,编辑TCP/IP,选项卡里面–>ip地址->IPALL –>tcp动态端口 写入1433
2.SQL Native Client配置–>客户端协议同样启用上面的两个协议即可。
然后在SQL Server Management Studio重启sqlserver即可,注意如果不是本地连接需要开启防火墙sqlserver链接 一般端口是1433
————————————-下面的不推荐用—–ppkj.net————————————
另一种方法微软自己提供了php连接mssql的dll扩展, 但是函数接口都和php自带扩展不一样,需要重新学习
以下在windows7 SQLServer2008 R2 x64环境 php5.2.16ts apache2.2下通过
先查看php的编译信息
<?php phpinfo();?>
查找 Thread Safety 如果是enabled 则使用对应版本号的ts版本,其他的则使用nts版本
安装后重启web服务器
如果phpinfo里面有sqlsrv扩展,则成功
注意:
1.ntwdblib.dll 版本为 2000.2.8.0 是 对应 SqlServer2000
2.ntwdblib.dll 版本为 2000.80.194.0 是 对应 SqlServer2005
3.ntwdblib.dll 版本为 2000.80.2039 是 对应 SqlServer2008
连接远端Sql Server数据库 遇到的bug(NT AUTHORITY\ANONYMOUS LOGON)
解决方法:
打开window下目录的:php.ini文件
修改mssql.secure_connection = off
<?php
//$conn=mssql_connect("QADB\SQL2005","sa","abc@123"); //建立与SQL Server数据库的连接
//mssql_select_db("db_online",$conn); //选择数据库
/*
//com连接 不行啊
$conn=new Com("ADODB.Connection");
$connstr="provider=sqloledb;datasource=QADB\SQL2005;uid=sa;pwd=abc@123;database=db_online;";
$conn->Open($connstr);
$rs=new Com("ADODB.Recordset");
$rs->open("select * from tb_admin",$conn,1,1);
$count=$rs->RecordCount;
echo "$count";
//ODBDC连接
$dbhost="QADB\SQL2005";
$dbname="db_online";
$dbuser="sa";
$dbpass="abc@123";
$conn=odbc_connect("Driver={SQL Server};Server=$dbhost;Database=$dbname","$dbuser","$dbpass");
$sql="select * from tb_admin";
$exec=odbc_exec($conn,$sql);
while($row=(odbc_fetch_array($exec)))
{
echo $row["name"]."<br/>";
}
*/
?>