2

很抱歉不得不在这里问这个;php.net 似乎对此充满了例外和借口。

我正在使用 PHP 5.3.6 运行 IIS 6.0。我已经安装并运行了 MDB2(即使是为非品牌 RDBMS 定制的驱动程序)。这一切都很好。但现在我需要让 PHP 连接到一些标准技术:MS SQL。

问题是 MDB2 的 mssql 驱动程序要求 PHP 已使用特殊标志进行编译。很难使用 php 二进制文件:)。

我可以走上获得编译器、下载源代码并重新编译的道路,但我只是开始怀疑当实际上有更好、更标准的方法来完成工作时,我是否已经陷入困境。

所以,我的问题是:对于 IIS 6 + PHP 5.3.6,是否有不同的、更简单、更常见的连接 MS SQL 的途径?

4

2 回答 2

3

正如您正确指出的那样,对社区mssql驱动程序的支持并未编译到最新的 Windows PHP 二进制文件中。

目前 MDB2 (2.4.1) 的当前稳定版本不支持微软官方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. 安装MDB2_Driver_sqlsrv

    pear install MDB2_Driver_sqlsrv

    这将安装最新的 MDB2 beta 和 MS sqlsrv 驱动程序:

    正在下载 MDB2_Driver_sqlsrv-1.5.0b3.tgz ...
    开始下载 MDB2_Driver_sqlsrv-1.5.0b3.tgz (29,468 bytes)
    .........完成:29,468 字节
    正在下载 MDB2-2.5.0b3.tgz ...
    开始下载 MDB2-2.5.0b3.tgz(130,865 字节)
    ...完成:130,865 字节
    安装好:channel://pear.php.net/MDB2_Driver_sqlsrv-1.5.0b3
    安装好:channel://pear.php.net/MDB2-2.5.0b3
    MDB2:可选功能 fbsql 可用(用于 MDB2 的 Frontbase SQL 驱动程序)
    MDB2:可选功能 ibase 可用(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 驱动程序)
    MDB2:要安装可选功能,请使用“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/>";
}

?>
于 2011-07-19T23:54:51.207 回答
1

MS为MSSQL提供PHP驱动:http: //www.microsoft.com/download/en/details.aspx? displaylang=en&id=20098

于 2011-07-19T20:13:08.580 回答