[PDO] chaine de connexion

Fermé
reaverlost Messages postés 150 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 14 mai 2018 - 19 juin 2014 à 10:18
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 - 19 juin 2014 à 13:41
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 :

<?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

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
19 juin 2014 à 11:36
'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...
0
reaverlost Messages postés 150 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 14 mai 2018 21
19 juin 2014 à 11:41
Oui désolé, c'était pas très malin.

Voici le message d'erreur :

Erreur : could not find driver
0
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
19 juin 2014 à 11:49
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
0
reaverlost Messages postés 150 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 14 mai 2018 21
19 juin 2014 à 12:03
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();
	}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
19 juin 2014 à 12:16
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.
0
reaverlost Messages postés 150 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 14 mai 2018 21
19 juin 2014 à 12:27
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...
0
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
19 juin 2014 à 12:58
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.
0
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
19 juin 2014 à 13:41
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
0