[PDO] chaine de connexion

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

  1. Contributeur
    '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
    1. Oui désolé, c'était pas très malin.

      Voici le message d'erreur :

      Erreur : could not find driver
      0
      1. 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
        1. 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
          1. 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
            1. 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
              1. 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
                1. 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