使用PEAR MDB2从PHP连接到MS SQL

时间:2021-01-08 07:17:04

Sorry to have to ask this here; php.net just seems to be full of exceptions and excuses regarding this.

不好意思,我想问一下;php。net似乎有很多例外和借口。

I'm running IIS 6.0 with PHP 5.3.6. I've got MDB2 installed and working (even with a custom-written driver for an off-brand RDBMS). That's all working great. But now I need to have PHP connect to a bit of standard technology: MS SQL.

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

The problem is the mssql driver for MDB2 requires PHP to have been compiled with special flags. Hard to do with php binaries :).

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

I could go down the road of getting a compiler, downloading the source and recompiling, but I'm just starting to wonder if I'm out in the weeds when there's actually a better, more standard way of getting the job done.

我可以使用编译器,下载源代码并重新编译,但是我开始怀疑是否有更好、更标准的方法来完成工作。

So, my question is: For IIS 6 + PHP 5.3.6, is there a different, easier, more commonly-tread route to connecting to MS SQL?

因此,我的问题是:对于IIS 6 + PHP 5.3.6,是否存在一种不同的、更容易的、更常见的路径来连接MS SQL?

2 个解决方案

#1


3  

As you've rightly pointed out, support for the community mssql driver is not compiled into the latest Windows PHP binaries.

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

Presently the current stable release of MDB2 (2.4.1) does not support the official Microsoft sqlsrv native driver.

目前,MDB2的稳定版本(2.4.1)不支持官方的Microsoft sqlsrv本机驱动程序。

However if you're willing to live on the edge a bit with the beta release of MDB2 then all is not lost. There is a Microsoft native sqlsrv driver that is part of the 2.5.0b3 release:

但是,如果您愿意忍受MDB2 beta版的痛苦,那么一切都不会丢失。有一个Microsoft本地sqlsrv驱动程序是2.5.0b3版本的一部分:

http://pear.php.net/package/MDB2_Driver_sqlsrv

http://pear.php.net/package/MDB2_Driver_sqlsrv

First of all ensure that you've installed the Microsoft native driver as I described in my answer here:

首先,请确保您已经安装了Microsoft native driver,正如我在这里给出的答案所示:

Connection between MSSQL and PHP 5.3.5 on IIS is not working

IIS上的MSSQL和PHP 5.3.5之间的连接不工作

Then to install the PEAR MDB2 sqlsrv driver do the following:

然后,要安装PEAR MDB2 sqlsrv驱动程序,请执行以下操作:

  1. If you've already installed MDB2 then uninstall it:

    如果您已经安装了MDB2,那么卸载它:

    pear uninstall mdb2

    梨卸载mdb2

    If you already have any drivers installed then you'll need to uninstall these first:

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

    pear uninstall mdb2#mysql

    梨卸载mdb2 # mysql

  2. Next tell PEAR that you want to allow non-stable beta packages:

    接下来告诉PEAR您希望允许非稳定的beta包:

    pear config-set preferred_state beta

    梨config-set preferred_stateβ

  3. Install MDB2_Driver_sqlsrv

    安装MDB2_Driver_sqlsrv

    pear install MDB2_Driver_sqlsrv

    pear安装MDB2_Driver_sqlsrv

    This will install the latest MDB2 beta and the MS sqlsrv driver:

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

    downloading MDB2_Driver_sqlsrv-1.5.0b3.tgz ...
    Starting to download MDB2_Driver_sqlsrv-1.5.0b3.tgz (29,468 bytes)
    .........done: 29,468 bytes
    downloading MDB2-2.5.0b3.tgz ...
    Starting to download MDB2-2.5.0b3.tgz (130,865 bytes)
    ...done: 130,865 bytes
    install ok: channel://pear.php.net/MDB2_Driver_sqlsrv-1.5.0b3
    install ok: channel://pear.php.net/MDB2-2.5.0b3
    MDB2: Optional feature fbsql available (Frontbase SQL driver for MDB2)
    MDB2: Optional feature ibase available (Interbase/Firebird driver for MDB2)
    MDB2: Optional feature mssql available (MS SQL Server driver for MDB2)
    MDB2: Optional feature mysql available (MySQL driver for MDB2)
    MDB2: Optional feature mysqli available (MySQLi driver for MDB2)
    MDB2: Optional feature oci8 available (Oracle driver for MDB2)
    MDB2: Optional feature odbc available (ODBC driver for MDB2)
    MDB2: Optional feature pgsql available (PostgreSQL driver for MDB2)
    MDB2: Optional feature querysim available (Querysim driver for MDB2)
    MDB2: Optional feature sqlite available (SQLite2 driver for MDB2)
    MDB2: Optional feature sqlsrv available (MS SQL Server driver for MDB2)
    MDB2: To install optional features use "pear install pear/MDB2#featurename"
    
  4. It's probably advisable to knock PEAR back to only allowing stable packages again

    最好还是把梨打回只允许稳定的包装。

    pear config-set preferred_state stable

    梨config-set preferred_state稳定

I just tried this with the following test script and I was able to connect to my local MS SQL Server and retrieve some data:

我只是用下面的测试脚本尝试了一下,我可以连接到本地的MS SQL服务器并检索一些数据:

<?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/>";
}

?>

#2


1  

MS provides a PHP driver for MSSQL: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=20098

MS为MSSQL提供了一个PHP驱动程序:http://www.microsoft.com/download/en/details.aspx?

#1


3  

As you've rightly pointed out, support for the community mssql driver is not compiled into the latest Windows PHP binaries.

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

Presently the current stable release of MDB2 (2.4.1) does not support the official Microsoft sqlsrv native driver.

目前,MDB2的稳定版本(2.4.1)不支持官方的Microsoft sqlsrv本机驱动程序。

However if you're willing to live on the edge a bit with the beta release of MDB2 then all is not lost. There is a Microsoft native sqlsrv driver that is part of the 2.5.0b3 release:

但是,如果您愿意忍受MDB2 beta版的痛苦,那么一切都不会丢失。有一个Microsoft本地sqlsrv驱动程序是2.5.0b3版本的一部分:

http://pear.php.net/package/MDB2_Driver_sqlsrv

http://pear.php.net/package/MDB2_Driver_sqlsrv

First of all ensure that you've installed the Microsoft native driver as I described in my answer here:

首先,请确保您已经安装了Microsoft native driver,正如我在这里给出的答案所示:

Connection between MSSQL and PHP 5.3.5 on IIS is not working

IIS上的MSSQL和PHP 5.3.5之间的连接不工作

Then to install the PEAR MDB2 sqlsrv driver do the following:

然后,要安装PEAR MDB2 sqlsrv驱动程序,请执行以下操作:

  1. If you've already installed MDB2 then uninstall it:

    如果您已经安装了MDB2,那么卸载它:

    pear uninstall mdb2

    梨卸载mdb2

    If you already have any drivers installed then you'll need to uninstall these first:

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

    pear uninstall mdb2#mysql

    梨卸载mdb2 # mysql

  2. Next tell PEAR that you want to allow non-stable beta packages:

    接下来告诉PEAR您希望允许非稳定的beta包:

    pear config-set preferred_state beta

    梨config-set preferred_stateβ

  3. Install MDB2_Driver_sqlsrv

    安装MDB2_Driver_sqlsrv

    pear install MDB2_Driver_sqlsrv

    pear安装MDB2_Driver_sqlsrv

    This will install the latest MDB2 beta and the MS sqlsrv driver:

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

    downloading MDB2_Driver_sqlsrv-1.5.0b3.tgz ...
    Starting to download MDB2_Driver_sqlsrv-1.5.0b3.tgz (29,468 bytes)
    .........done: 29,468 bytes
    downloading MDB2-2.5.0b3.tgz ...
    Starting to download MDB2-2.5.0b3.tgz (130,865 bytes)
    ...done: 130,865 bytes
    install ok: channel://pear.php.net/MDB2_Driver_sqlsrv-1.5.0b3
    install ok: channel://pear.php.net/MDB2-2.5.0b3
    MDB2: Optional feature fbsql available (Frontbase SQL driver for MDB2)
    MDB2: Optional feature ibase available (Interbase/Firebird driver for MDB2)
    MDB2: Optional feature mssql available (MS SQL Server driver for MDB2)
    MDB2: Optional feature mysql available (MySQL driver for MDB2)
    MDB2: Optional feature mysqli available (MySQLi driver for MDB2)
    MDB2: Optional feature oci8 available (Oracle driver for MDB2)
    MDB2: Optional feature odbc available (ODBC driver for MDB2)
    MDB2: Optional feature pgsql available (PostgreSQL driver for MDB2)
    MDB2: Optional feature querysim available (Querysim driver for MDB2)
    MDB2: Optional feature sqlite available (SQLite2 driver for MDB2)
    MDB2: Optional feature sqlsrv available (MS SQL Server driver for MDB2)
    MDB2: To install optional features use "pear install pear/MDB2#featurename"
    
  4. It's probably advisable to knock PEAR back to only allowing stable packages again

    最好还是把梨打回只允许稳定的包装。

    pear config-set preferred_state stable

    梨config-set preferred_state稳定

I just tried this with the following test script and I was able to connect to my local MS SQL Server and retrieve some data:

我只是用下面的测试脚本尝试了一下,我可以连接到本地的MS SQL服务器并检索一些数据:

<?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/>";
}

?>

#2


1  

MS provides a PHP driver for MSSQL: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=20098

MS为MSSQL提供了一个PHP驱动程序:http://www.microsoft.com/download/en/details.aspx?