[PDO] chaine de connexion

reaverlost Messages postés 168 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 :

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

A voir également:

8 réponses

ElementW Messages postés 5690 Statut Contributeur 1 224
 
'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 168 Statut Membre 21
 
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 Statut Membre 16
 
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 168 Statut Membre 21
 
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 Statut Membre 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 168 Statut Membre 21
 
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 Statut Membre 16
 
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 Statut Membre 16
 
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