У меня есть PHP 5.5 на Windows 7 ampps. Я пытаюсь получить доступ к файлу базы данных 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
Вопрос в том, как я могу получить пропущенный драйвер и заставить его работать с кодом, который я рассматривал выше?
PDO поддерживает несколько разных драйверов, но не все из них включены по умолчанию. Для PDO_ODBC в Windows нам необходимо убедиться, что строка
extension=php_pdo_odbc.dll
(не комментируется) в php.ini.
extension=php_pdo_odbc.dll
строкаextension=php_pdo_odbc.dll
. Если это так, удалите начальную точку с запятой и посмотрите, поможет ли это.