Подключение к 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:
Прежде всего убедитесь, что вы установили собственный драйвер Microsoft, как я описал в своем ответе здесь:
Затем для установки драйвера PEAR MDB2 sqlsrv сделайте следующее:
Если вы уже установили MDB2, удалите его:
pear uninstall mdb2
Если у вас уже установлены какие-либо драйверы, вам нужно сначала удалить их:
pear uninstall mdb2#mysql
Затем скажите PEAR, что вы хотите разрешить нестабильные бета-пакеты:
pear config-set preferred_state beta
устанавливать
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"
Вероятно, желательно снова отбросить 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