[PDO] chaine de connexion
reaverlost
Messages postés
168
Statut
Membre
-
zermat Messages postés 160 Statut Membre -
zermat Messages postés 160 Statut Membre -
Bonjour,
Je dois me connecter avec PDO à une chaine de connexion que mon tuteur m'a donné. La voici :
jdbc:jtds:sqlserver:host=172.31.XXX.XXX:1433;dbname=NOMBASE", "USER", "PASSWORD"
Mon code :
Mais ça ne fonctionne pas.
Je débute en PDO, j'ai essayé une connexion à une de mes bases en local, et ça marche.
Quelqu'un aurait une idée?
Merci d'avance.
Je dois me connecter avec PDO à une chaine de connexion que mon tuteur m'a donné. La voici :
jdbc:jtds:sqlserver:host=172.31.XXX.XXX:1433;dbname=NOMBASE", "USER", "PASSWORD"
Mon code :
<?php
try
{
$db = new PDO("jdbc:jtds:sqlserver:host=172.31.XXX.XXX:1433;dbname=NOMBASE", "USER", "PASSWORD");
echo "Ok";
}
catch(PDOException $e)
{
echo "Erreur";
}
?>
Mais ça ne fonctionne pas.
Je débute en PDO, j'ai essayé une connexion à une de mes bases en local, et ça marche.
Quelqu'un aurait une idée?
Merci d'avance.
8 réponses
-
'lut, juste "Erreur" c'est super descriptif comme message d'erreur... Quel gâchis d'ailleurs: PDOException regorge d'infos précises sur l'erreur, alors on va s'en servir:
... catch(PDOException $e) { echo "Erreur: " . $e->getMessage(); }
L'erreur donnée te donnera surement une piste... -
Oui désolé, c'était pas très malin.
Voici le message d'erreur :
Erreur : could not find driver -
jdbc est une couche java, PDO est une couche php. Je ne suis pas sûr qu'ils puissent marcher ensemble. Essayez plutôt d'utiliser la chaîne de connexion suivante:
$db = new PDO("sqlsrv:server=172.31.XXX.XXX:1433;Database=NOMBASE", "USER", "PASSWORD");
Mais il faut que les extensions pdo soit actives dans le fichier php.ini (décommenter php_pdo.dll et php_pdo_mssql.dll). Si vous utilisez php-5.3 ou php-5.4 vous pouvez télécharger les dll ici: http://www.microsoft.com/en-us/download/details.aspx?id=20098 -
Merci pour vos réponses.
Mais ça ne fonctionne toujours pas, j'ai bien vérifié les extensions, et toujours le même message d'erreur :
Erreur : could not find driver
Mon code :
try { $db = new PDO("sqlsrv:server=172.31.XXX.XXX:1433;Database=NOMBASE", "USER", "PASSWORD"); echo "Ok"; } catch(PDOException $e) { echo "Erreur : ". $e->getMessage(); } -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
N'oubliez pas qu'après chaque modification de php.ini il faut redémarrer apache.
Aussi faite une page test.php avec ce code<?php phpinfo(); ?>
et vérifier que Configuration File (php.ini) Path correspond bien à votre fichier php.ini et que dans la section PDO drivers vous avez mssql enabled. -
Voici ce que j'ai :
Configuration File (php.ini) Path ==> C:\Windows (Pas de fichier php.ini)
Loaded Configuration File ==> C:\Program Files\wamp\bin\apache\apache2.4.4\bin\php.ini
Dans ce fichier php.ini, les extensions liées à PDO sont bien décommentées.
Mais dans mon phpinfo(), dans la rubrique PDO, je n'ai pas mssql enabled... -
Deux possibilités soit que php ne trouve pas php_pdo_mssql.dll soit qu'il n'arrive pas à le charger (module incompatible).
Pour la première possibilité il faut vérifier la directive extension_dir dans le fichier php.ini correspond bien au dossier dans lequel se trouve php_pdo_mssql.dll. Il est conseillé de donner un chemin absolu à ce dossier par exemple:
extension_dir = "C:\Program Files\wamp\bin\apache\apache2.4.4\bin\ext"
Vérifier que dans ce dossier ext se trouve notre fameux php_pdo_mssql.dll.
Pour éliminer les doutes faite copier le fichier php.ini dans C:\WINDOWS
Redémarrer le serveur
faite le test de phpinfo : il faut obtenir dans la rubrique PDO mssql enabled.
Si malgré tout ça ne fonctionne pas c'est sûr php_pdo_mssql.dll n'est pas compatible avec votre version php. Pour vérifier cela aller dans le dossier où se trouve php.exe et tapez cette commande :
php.exe -m
cette commande liste tout les modules chargés par php parmi lesquels doit se trouver pdo_mssql. Si php n'arrive pas à charger ce module, il va afficher un warning. -
troisième possibilité il vous manque ntwdblib.dll.
ntwdblib.dll est normalement installé avec MSSQL Server vous le trouverez dans C:\Windows\system32 sur la machine où vous avez installé MSSQL Server copiez-le sur la machine où vous avez installé php à coté du fichier php.exe