2015-03-25 8 views
0

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

<?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++; 
} 

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

Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in C:\some\path\di.php:7 Stack trace: #0 C:\some\path\di.php(7): PDO->__construct('odbc:DRIVER={Mi...') #1 {main} thrown in C:\some\path\di.php on line 7

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

+1

Проверьте файл php.ini, чтобы увидеть, что строка 'extension = php_pdo_odbc.dll' закомментирована. Если это так, удалите ведущую точку с запятой и посмотрите, поможет ли это. –

+0

@GordThompson Да, это так. Я обновил PHP.ini, и он отлично работает. Спасибо. – SaidbakR

ответ

1

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

extension=php_pdo_odbc.dll 

включен (не закомментирована) в php.ini.

Смежные вопросы