使用PEAR MDB2从IIS上的PHP连接到MS SQL


Connecting to MS SQL from PHP on IIS using PEAR MDB2

很抱歉在这里问这个问题;关于这一点,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驱动程序,执行以下操作:

  1. 如果您已经安装了MDB2,请卸载它:

    pear uninstall mdb2

    如果您已经安装了任何驱动程序,那么您需要先卸载这些驱动程序:

    pear uninstall mdb2#mysql

  2. 接下来告诉PEAR你想要允许不稳定的beta包:

    pear config-set preferred_state beta

  3. 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"
  4. 最好还是把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