Подключение к MS SQL из PHP на IIS с использованием PEAR MDB2

Извините, что должен спросить это здесь; Кажется, что php.net полон исключений и оправданий по этому поводу.

Я использую IIS 6.0 с PHP 5.3.6. У меня установлен и работает MDB2 (даже с написанным на заказ драйвером для фирменной RDBMS). Это все работает отлично. Но теперь мне нужно подключить PHP к стандартной технологии: MS SQL.

Проблема в том, что драйвер mssql для MDB2 требует, чтобы PHP был скомпилирован со специальными флагами. Трудно сделать с PHP-файлами:).

Я мог бы пойти по пути получения компилятора, загрузки исходного кода и перекомпиляции, но я только начинаю задумываться, не нахожусь ли я в замешательстве, когда на самом деле есть лучший, более стандартный способ выполнения работы.

Итак, мой вопрос: для IIS 6 + PHP 5.3.6, есть ли другой, более простой, более распространенный способ подключения к MS SQL?

2 ответа

Решение

Как вы правильно заметили, поддержка сообщества mssql Драйвер не скомпилирован в последние бинарные файлы Windows PHP.

В настоящее время текущая стабильная версия MDB2 (2.4.1) не поддерживает официальный Microsoft sqlsrv родной водитель.

Однако, если вы готовы немного пожить с бета-версией MDB2, тогда еще не все потеряно. Есть родная Microsoft sqlsrv драйвер, который является частью версии 2.5.0b3:

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

Прежде всего убедитесь, что вы установили собственный драйвер Microsoft, как я описал в своем ответе здесь:

Соединение между MSSQL и PHP 5.3.5 на IIS не работает

Затем для установки драйвера PEAR MDB2 sqlsrv сделайте следующее:

  1. Если вы уже установили MDB2, удалите его:

    pear uninstall mdb2

    Если у вас уже установлены какие-либо драйверы, вам нужно сначала удалить их:

    pear uninstall mdb2#mysql

  2. Затем скажите PEAR, что вы хотите разрешить нестабильные бета-пакеты:

    pear config-set preferred_state beta

  3. устанавливать 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 байт
    установить нормально: канал://pear.php.net/MDB2_Driver_sqlsrv-1.5.0b3
    установить нормально: канал://pear.php.net/MDB2-2.5.0b3
    MDB2: доступна дополнительная функция fbsql (драйвер SQL для Frontbase для MDB2)
    MDB2: доступна дополнительная функция ibase (драйвер Interbase/Firebird для MDB2)
    MDB2: доступна дополнительная функция mssql (драйвер MS SQL Server для MDB2)
    MDB2: доступна дополнительная функция mysql (драйвер MySQL для MDB2)
    MDB2: доступна дополнительная функция mysqli (драйвер MySQLi для MDB2)
    MDB2: доступна дополнительная функция oci8 (драйвер Oracle для MDB2)
    MDB2: доступна опция odbc (драйвер ODBC для MDB2)
    MDB2: доступна дополнительная функция pgsql (драйвер PostgreSQL для MDB2)
    MDB2: Доступна дополнительная функция Querysim (драйвер Querysim для MDB2)
    MDB2: доступна дополнительная функция sqlite (драйвер SQLite2 для MDB2)
    MDB2: доступна дополнительная функция sqlsrv (драйвер MS SQL Server для MDB2)
    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/>";
}

?>

MS предоставляет драйвер PHP для MSSQL: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=20098

Другие вопросы по тегам