Win7 下PHP连接远端Sql Server R2

PHP连接SQLServer2008R2教程与常见问题解决方案

参考: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/>";
}

*/
?>


 

 

ntwdblib.dll ntwdblib.dll文件下载,解决找不到ntwdblib.dll的问题 ntwdblib.dll控件常规安装方法(仅供参考): 一、如果在运行某软件或编译程序时提示缺少、找不到ntwdblib.dll等类似提示,您可将ntwdblib.dll拷贝到指定目录即可(一般是system系统目录或放到软件同级目录里面),或者重新添加文件引用。 二、您从我们网站下载下来文件之后,先将其解压(一般都是rar压缩包), 然后根据您系统的情况选择X86/X64,X86为32位电脑,X64为64位电脑。默认都是支持32位系统的, 如果您不知道是X86还是X64,您可以看这篇文章。 三、根据软件情况选择文件版本。此步骤比较复杂,如果是Windows的dll文件,      版本号以5.0开头的或含有 nt 一般是windows2000的文件。      版本号以5.1开头的或含有 xp、xpsp1、xpsp2、xpsp3 信息的一般是windowsXP的文件。      版本号以6.0开头的或含有 longhorn、vista 信息的一般是windowsVista的文件。      版本号以6.1开头的或含有 win7 信息的一般是windows7的文件。 如果不是windows的dll文件,则需要灵活查看版本号、描述、网友提供的信息、以及相关dll的版本号去判断。 四、直接拷贝该文件到系统目录里:    1、Windows 95/98/Me系统,将ntwdblib.dll复制到C:\Windows\System目录下。    2Windows NT/2000系统,将ntwdblib.dll复制到C:\WINNT\System32目录下。 3、Windows XP/WIN7/win10系统(64位系统对应64位dll文件,32位系统对应32dll文件),将ntwdblib.dll复制到C:\Windows\System32目录下。 4、如果您的系统是64位的请将32位的dll文件复制到C:\Windows\SysWOW64目录,具体的方法可以参考这篇文章:win7 64位旗舰版系统运行regsvr32.exe提示版本不兼容 五、打开"开始-运行-输入regsvr32 ntwdblib.dll",回车即可解决。希望为您提供的ntwdblib.dll对您有所帮助。 可将下面的代码保存为“注册.bat“,放到dll文件同级目录(只要在同一个文件夹里面有这两个文件即可),双击注册.bat,就会自动完成ntwdblib.dll注册(win98不支持)。 下面是系统与dll版本对应的注册bat文件(64位的系统对应64位dll文件,32位系统对应32位的dll文件,如果64位的系统安装32位的dll文件,请将下面的system32替换为SysWOW64即可。)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值