Я пытаюсь подключиться к базе данных 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.
Я знаю, что этот конкретный 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 установлен в соответствии с комментарием Марка Б.
Похоже, драйвер установлен, если это не другой драйвер.
При дальнейшей проверке моего phpini в соответствии с дополнительным комментарием Марка Б, похоже, что у меня не установлен драйвер POD ODBC:
Итак, если у меня установлен драйвер ODBC для pdo, odbc
будет в конце списка, правильно?
Получив большую помощь от Марка Б. в комментариях к первому вопросу, выясняется, что проблема возникла из-за моего недопонимания odbc
на моем веб-сервере и имея pdo_odbc
драйвер установлен.
Хотя на веб-сервере у меня был включен odbc, у меня не был установлен драйвер odbc для PDO.
Этот драйвер необходим для доступа к базам данных odbc через pdo.
Согласно документации php.net по установка pdo для windows драйвер уже был включен в сборку php (я использую версию 5.5) и просто должен был быть включен в php.ini
файл.
После добавления драйвера и перезапуска сервера у меня теперь был загружен драйвер:
и мой тестовый запрос с использованием 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);
}
Сбрасывает:
Спасибо за вашу помощь Марк Б.
Других решений пока нет …