PHP pdo ODBC и файловый драйвер mdb

0

У меня есть PHP 5.5 на Windows 7 . Я пытаюсь получить доступ к файлу базы данных MS Access с именем main.mdb с помощью PHP. Я использую следующий код:

<?php
$dbName = "C:\\test\\main.mdb";
if (!file_exists($dbName)) {
    die("Could not find database file.");
}
// The following is line 7
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)};charset=UTF-8; DBQ=$dbName; Uid=; Pwd=;");
//$db->exec("set names windows-1256");
$sql = "SELECT 0bok.*, '0cat'.name FROM 0bok INNER JOIN 0cat ON '0cat'.id = '0bok'.cat WHERE cat = 35 OR cat = 38 OR cat = 39 OR cat = 41 OR cat = 47 OR cat = 48 OR cat = 4 OR cat = 5 ORDER BY cat";
$result = $db->query($sql);
$row = $result->fetchAll();
$i = 1;

echo "<pre>";
foreach ($row as $book) {
    echo $i . ": " . iconv("windows-1256", "utf-8", $book['bk']) . ", " . $book['bkid'] . " -> " . iconv("windows-1256", "utf-8", $book['name'])  . "\n";
    $i++;
}

Однако у меня появилось следующее сообщение об ошибке:

Неустранимая ошибка: исключение исключения "PDOException" с сообщением "не удалось найти драйвер" в C:\some\path\di.php: 7 Трассировка стека: # 0 C:\some\path\di.php(7): [CN10 ]> __ construct ('odbc: DRIVER = {Mi...') # 1 {main} выбрано в C:\some\path\di.php в строке 7

Вопрос в том, как я могу получить пропущенный драйвер и заставить его работать с кодом, который я рассматривал выше?

  • 1
    Проверьте файл php.ini, чтобы увидеть, extension=php_pdo_odbc.dll строка extension=php_pdo_odbc.dll . Если это так, удалите начальную точку с запятой и посмотрите, поможет ли это.
  • 0
    @GordThompson Да, это так. Я обновил PHP.ini, и он работает нормально. Спасибо.
Теги:
odbc
ms-access
pdo

1 ответ

1
Лучший ответ

PDO поддерживает несколько разных драйверов, но не все из них включены по умолчанию. Для PDO_ODBC в Windows нам необходимо убедиться, что строка

extension=php_pdo_odbc.dll

(не комментируется) в php.ini.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню