我有一个用PHP和MSSQL2000制作的应用程序,但现在想将它连接到MSSQL2005数据库。它总是失败,经过一些研究后,我被告知要下载ntwdblib.dll
并替换我在我的PHP目录中的旧版本,但仍然无法连接到它。我还在php.ini文件中取消注释了MSSQL扩展。
请有人帮我这个吗?
答案 0 :(得分:1)
http://www.php.net/manual/en/mssql.installation.php
启用MSSQL扩展 添加extension = php_mssql.dll到 php.ini中。 要使这些函数起作用,必须使用PHP编译 --with-mssql [= DIR],其中DIR是FreeTDS安装前缀。和FreeTDS 应该使用编译 --enable-msdblib。
也
如果使用Sybase扩展并且没有MS SQL扩展编译PHP,则MS SQL函数是Sybase函数的别名。
<编辑>
只是问问而已。你有mssql_connect
功能吗?或连接失败?如果连接失败,请确保在MSSQL中启用TCP / IP(使用SQL Server配置管理器)。我还记得启用命名管道,但我不确定是否需要它
< /编辑>
作为替代方案,您可以查看COM和ADODB。
使用Windows身份验证连接到SQL Server的COM和ADODB示例:
$this->m_conn = new COM("ADODB.Connection");
$this->m_conn->CommandTimeout=1200;
$dsn="Provider=SQLNCLI;Data Source=server_name;Integrated Security=SSPI;Initial Catalog=database_name;Application Name=YourAppName - ".$user['name'];
$this->m_conn->Open($dsn);
if(!$this->m_conn)
throw new Exception("Could not start ADO",101);
$this->m_comm = new COM("ADODB.Command");
$this->m_comm->ActiveConnection=$this->m_conn;
$this->m_comm->CommandTimeout=1200;
然后执行命令
$this->m_comm->CommandText=$sql;
$res=$this->m_comm->Execute();
然后提取数据
if(($num_cols=$res->Fields->Count())>=1)
{
$return=array();
while(!$res->EOF)
{
$row=array();
for($i=0;$i<$num_cols;$i++)
$row[$res->Fields($i)->name]=$res->Fields($i)->value;
$res->MoveNext();
$return[]=$row;
}
}
$res->Close();
return $return;
不确定很多请求的速度,但这是一个很好的方法,可以毫不费力地使用DSN,并且使用DSN可以指定比使用函数参数更多的东西。
修改的: 您可以使用ADO定义自己的mssql_connect(),mssql_command()等。如果常规的mssql扩展不起作用,那就是解决方法。
答案 1 :(得分:0)
答案 2 :(得分:0)
非常感谢你的帮助。
实际上我确实找到了一种让它发挥作用的方法
首先让我先谈谈我对系统要求的比较。
我的系统
操作系统:-Win xP SP2
PHP: - 5.3.5
MSSQL 2005
SQL Native Client 2005
<强>必需强>
推荐:-Win xP SP3
PHP: - 5.2.4或更高版本
MSSQL Server 2008 Native Client(在同一台计算机上运行php)
适用于PHP的SQL Server驱动程序
将我的Windows升级到Service Pack 3后,我下载并安装了MSSQL Server 2008 Native Client 然后安装了SQL Server Driver For PHP 2.0,它要求一个目录来保存dll文件。 我浏览到php目录,然后浏览复制dll文件的'ext'文件夹。 然后转到php.ini文件并在Dynamic Extensions下添加这两行。
延长= php_sqlsrv_53_ts_vc6.dll
延长= php_pdo_sqlsrv_53_ts_vc6.dll
然后重启我的网络服务器和booommm ....我得到它的工作.. 做了一个与数据库的测试连接,它成功了..
希望这会有所帮助,感谢大家的帮助,真的很感激.. 和平