AOP retour d'erreur “could not find driver” avec un état de fonctionnement de la DSN
Je suis en train d'essayer de se connecter à une base de données odbc via php PDO
classe:
$dsn = 'odbc:CS_HDZipCodes32bit';
$username = 'demo';
$password = 'skdemo!';
$connection = new PDO($dsn, $username, $password);
die( var_dump( $connection ) );
mais quand je le fais, j'obtiens l'erreur :
Fatal error: Uncaught exception 'PDOException' with message 'impossible de trouver un pilote dans C:\inetpub\wwwroot\pdoClass.php:7 Stack trace: #0 C:\inetpub\wwwroot\pdoClass.php(7): PDO->__construct('odbc:CS_HDZipCo...', 'demo', 'skdemo!') #1 {principal} jeté dans C:\inetpub\wwwroot\pdoClass.php sur la ligne 7
La $dsn
valeur est le nom de la source de données que j'ai créé dans mon Gestionnaire ODBC.
Je sais ce DSN fonctionne parce que j'ai été en mesure de construire un autre fichier de démonstration et se connecter avec succès via 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));
J'ai été fouiller dans les AOP-ODBC de la documentation ainsi que d'autres ressources en ligne, mais je ne peux pas comprendre pourquoi PHP est impossible de trouver le pilote lors de la tentative de l'AOP.
Des idées?
Mise à jour
J'ai sauté ouvrir ma page phpinfo assurez-vous que le pilote odbc est installé par Marc B commentaire:
On dirait que le pilote est installé, sauf si c'est un autre pilote.
Une Autre Mise À Jour
Sur une inspection plus approfondie de mon phpini par Marc B du commentaire, on dirait que je n'ai pas le POD ODBC driver spécifique installé:
Donc ici, si j'avais le pilote ODBC pour les aop installé, odbc
serait à la fin de la liste, correct?
Oui, le bloc de code en bas était moi, en utilisant le même de la dsn à partir de la haut avec odbc_connect.
ok, alors avez-vous vérifié si l'aop pilote odbc est installé? pdo a ses propres pilotes, et qui n'est pas juste "wrap"
odbc_*()
fonctions.Il semble que je ne. J'ai mis à jour la question d'origine avec une capture d'écran montrant le phpinfo de la section odbc.
c'est odbc, lui-même, mais pas pdo odbc. ils sont deux choses complètement distinctes DB interfaces. C'est votre
odbc_connect()
fonctionne, mais n'a absolument rien à voir avec pdo.
OriginalL'auteur Chris Schmitz | 2015-08-04
Vous devez vous connecter pour publier un commentaire.
Après une grande aide de Marc B dans la question initiale de commentaires, il s'avère que le problème venait de mon incompréhension de permettre
odbc
sur mon serveur web et avoir lepdo_odbc
pilote installé.Même si j'avais odbc activé sur le serveur web, je n'ai pas le pilote odbc installés pour les AOP.
Ce pilote est nécessaire pour être en mesure d'accéder à des bases de données odbc via pdo.
Par l'php.net documentation sur l'installation de pdo pour windows, le pilote était déjà inclus dans le php construire (j'utilise la version 5.5) et juste besoin d'être inclus dans le
php.ini
fichier.Après ajout du pilote et de redémarrage du serveur, j'ai maintenant eu le pilote chargé:
et mon test de requête à l'aide de PDO sur ma base de données de démonstration travaillé:
Vide:
Merci pour votre aide Marc B.
php.ini
a des paramètres qui devraient permettre de faire vos extensions, vérifiezphpinfo()
de l'endroit où il a chargé lephp.ini
. Dans mon cas, c'était toujours à la recherche deC:\Windows
et j'ai oublié au moins à une httpdPHPINIDir
directive à dire à l'endroit exactement.OriginalL'auteur Chris Schmitz