很抱歉在这里问这个问题;关于这一点,Php.net似乎充满了例外和借口。
我运行IIS 6.0和PHP 5.3.6。我已经安装并运行了MDB2(甚至使用了为非品牌RDBMS编写的自定义驱动程序)。这一切都很好。但是现在我需要PHP连接到一些标准技术:MS SQL。
问题是MDB2的mssql驱动程序要求PHP使用特殊标志进行编译。php二进制文件很难做到:).
我可以找到一个编译器,下载源代码并重新编译,但是我开始怀疑,当有更好、更标准的方法来完成工作时,我是否已经在杂草中了。
所以,我的问题是:对于IIS 6 + PHP 5.3.6,是否有一个不同的,更容易的,更常见的路线连接到MS SQL?
正如您正确指出的那样,对社区mssql
驱动程序的支持并未编译到最新的Windows PHP二进制文件中。
目前MDB2(2.4.1)的稳定版本不支持官方的Microsoft sqlsrv
原生驱动程序。
但是,如果您愿意在MDB2的beta版本的边缘生活一点,那么一切都不会失去。有一个Microsoft本地sqlsrv
驱动程序是2.5.0b3版本的一部分:
http://pear.php.net/package/MDB2_Driver_sqlsrv
首先确保您已经安装了Microsoft本机驱动程序,正如我在这里的回答中所描述的那样:
在IIS上MSSQL和PHP 5.3.5之间的连接不能正常工作
然后安装PEAR MDB2 sqlsrv驱动程序,执行以下操作:
-
如果您已经安装了MDB2,请卸载它:
pear uninstall mdb2
如果您已经安装了任何驱动程序,那么您需要先卸载这些驱动程序:
pear uninstall mdb2#mysql
-
接下来告诉PEAR你想要允许不稳定的beta包:
pear config-set preferred_state beta
-
Install
MDB2_Driver_sqlsrv
pear install MDB2_Driver_sqlsrv
这将安装最新的MDB2测试版和MS sqlsrv驱动程序:
<>之前下载MDB2_Driver_sqlsrv-1.5.0b3。tgz……开始下载MDB2_Driver_sqlsrv-1.5.0b3。TGZ(29,468字节)……完成:29,468字节下载MDB2-2.5.0b3。tgz……开始下载MDB2-2.5.0b3。TGZ(130,865字节)…完成:130,865字节安装ok:通道://pear.php.net/MDB2_Driver_sqlsrv-1.5.0b3安装ok:通道://pear.php.net/MDB2-2.5.0b3MDB2:可选特性fbsql可用(用于MDB2的Frontbase SQL驱动程序)MDB2:可用的可选特性库(用于MDB2的Interbase/Firebird驱动程序)MDB2:可选特性mssql可用(MDB2的MS SQL Server驱动程序)MDB2:可选特性mysql可用(用于MDB2的mysql驱动程序)MDB2:可选特性mysqli可用(用于MDB2的mysqli驱动程序)MDB2:可选特性oci8可用(用于MDB2的Oracle驱动程序)MDB2:可选特性odbc可用(用于MDB2的odbc驱动程序)MDB2:可选特性pgsql可用(用于MDB2的PostgreSQL驱动程序)MDB2:可选特性querysim可用(用于MDB2的querysim驱动程序)MDB2:可选特性sqlite可用(用于MDB2的SQLite2驱动程序)MDB2:可选特性sqlsrv可用(用于MDB2的MS SQL Server驱动程序)要安装可选功能,请使用"pear install pear/MDB2#featurename" -
最好还是把PEAR改回只允许稳定的包
pear config-set preferred_state stable
我只是尝试了以下测试脚本,我能够连接到我的本地MS SQL Server和检索一些数据:
<?php
require_once 'MDB2.php';
$dsn = array(
'phptype' => 'sqlsrv',
'username' => 'test',
'password' => 'testpass',
'hostspec' => 'localhost',
'database' => 'PEARMDBTEST',
);
$mdb2 =& MDB2::connect($dsn);
if(PEAR::isError($mdb2))
{
die($mdb2->getMessage());
}
$res =& $mdb2->query('SELECT * FROM TestData');
while (($row = $res->fetchRow())) {
echo $row['TestDataRow'] . "<br/>";
}
?>
MS为MSSQL提供了PHP驱动程序:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=20098