Ошибка возврата PDO «не удалось найти драйвер» с известным работающим DSN

Я пытаюсь подключиться к базе данных odbc через php PDO учебный класс:

$dsn = 'odbc:CS_HDZipCodes32bit';
$username = 'demo';
$password = 'skdemo!';

$connection = new PDO($dsn, $username, $password);

die( var_dump( $connection ) );

но когда я делаю, я получаю ошибку:

Неустранимая ошибка: необработанное исключение «PDOException» с сообщением «не удалось найти драйвер» в C: \ inetpub \ wwwroot \ pdoClass.php: 7 Трассировка стека: # 0 C: \ inetpub \ wwwroot \ pdoClass.php (7): PDO- > __ construct (‘odbc: CS_HDZipCo …’, ‘demo’, ‘skdemo!’) # 1 {main} в C: \ inetpub \ wwwroot \ pdoClass.php в строке 7

$dsn значение — это имя DSN, которое я создал в диспетчере ODBC.

менеджер odbc's dsns

Я знаю, что этот конкретный DSN работает, потому что я смог создать другой демонстрационный файл и успешно подключиться через odbc_connect:

$connection = odbc_connect("CS_HDZipCodes32bit", 'demo', 'skdemo!');

if(!$connection){
die('connection failed');
}

$statement = "SELECT * FROM ZipCodes";

$result = odbc_exec($connection, $statement);


// Outputs the zips as expected
var_dump(odbc_result_all($result));

Я копался в PDO-ODBC Документация, а также другие ресурсы в Интернете, но я не могу понять, почему PHP не может найти драйвер при попытке из PDO.

Есть идеи?

Я открыл мою страницу phpinfo, чтобы убедиться, что драйвер odbc установлен в соответствии с комментарием Марка Б.

odbc в phpini

Похоже, драйвер установлен, если это не другой драйвер.

При дальнейшей проверке моего phpini в соответствии с дополнительным комментарием Марка Б, похоже, что у меня не установлен драйвер POD ODBC:

введите описание изображения здесь

Итак, если у меня установлен драйвер ODBC для pdo, odbc будет в конце списка, правильно?

9

Решение

Получив большую помощь от Марка Б. в комментариях к первому вопросу, выясняется, что проблема возникла из-за моего недопонимания odbc на моем веб-сервере и имея pdo_odbc драйвер установлен.

Хотя на веб-сервере у меня был включен odbc, у меня не был установлен драйвер odbc для PDO.

отсутствует драйвер odbc

Этот драйвер необходим для доступа к базам данных odbc через pdo.

Согласно документации php.net по установка pdo для windows драйвер уже был включен в сборку php (я использую версию 5.5) и просто должен был быть включен в php.ini файл.

в том числе php_pdo.dll

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

введите описание изображения здесь

и мой тестовый запрос с использованием PDO в моей демонстрационной базе данных работал:

$dsn = 'odbc:CS_HDZipCodes32bit';
$username = 'demo';
$password = 'skdemo!';

$connection = new PDO($dsn, $username, $password);

$query = "Select * FROM ZipCodes";


$result = $connection->query($query);

foreach($result as $row){
var_dump($row);
}

Сбрасывает:

pdo var dump

Спасибо за вашу помощь Марк Б.

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]