IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Connexion à Microsoft SQL Server version 2014 [SQL-Server]


Sujet :

PHP & Base de données

  1. #1
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 377
    Points : 19 049
    Points
    19 049
    Par défaut Connexion à Microsoft SQL Server version 2014
    Bonjour à tous.

    Voici mon environnement :
    --> Windows 10 Pro version 64 bits.
    --> WampServer version 64 bits
    --> Microsoft Visual C++ 2015 redistributable
    --> apache 2.4.18
    --> php 7.0.2

    J'ai installer Microsoft SQL Server Express 2014. J'ai pu créer une base de données ('base') et une table ('test') sans problème.

    Je veux accéder à ma base nouvellement créé, par php.
    J'ai cherché sur le net et je n'ai pas trouvé le ou les drivers pour pouvoir accéder à SQL Server.
    Est-ce qu'il existe une version pour php 7.0 ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux être interessé par :
    https://github.com/thomsonreuters/msphpsql

    ou attendre que Microsoft fournisse un pilote pour PHP7.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 377
    Points : 19 049
    Points
    19 049
    Par défaut
    Salut Sabotage.

    Merci pour l'information. Oui, mais c'est une version 32 bits !
    D'ailleurs, je n'ai trouvé que des versions 32 bits. Est-ce que cela existe en 64 bits ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as toutes les explications la :
    https://msdn.microsoft.com/en-us/library/cc296170.aspx

    Mais comme je t'ai dit, pour PHP7 il n'y a aucune garantie qu'il sorte un jour.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 377
    Points : 19 049
    Points
    19 049
    Par défaut
    Salut sabotage.

    Merci pour le lien, mais nul part il est indiqué la version 32 ou 64 bits du driver qui doit être téléchargé.
    Si c'est le cas, je ne l'est pas vu.

    Citation Envoyé par Sabotage
    Mais comme je t'ai dit, pour PHP7 il n'y a aucune garantie qu'il sorte un jour.
    Il y a de plus en plus de gens qui utilisent la nouvelle version php 70.
    Elle est plus performante et sans trop me tromper, il y a aura certainement un driver SQL Server pour php 7.0
    La seule question que l'on doit se poser, c'est quand ? Donc je vais attendre sa sortie, bien sagement.

    Je vais détaillé un peu plus mon problème.
    J'ai wampserver et j'ai plusieurs environnements de tests. Pour les distinguer, j'utilise un code couleur.

    1) vert.
    --> Microsoft Visual C++ 2008 Redistributable.
    --> version 32 bits.
    --> apache 2.2.31
    --> php 5.4.45 & 5.3.29

    2) rouge.
    --> Microsoft Visual C++ 2012 Redistributable.
    --> version 64 bits.
    --> apache 2.4.17
    --> php 5.6.17 & 5.5.31

    3) bleu.
    --> Microsoft Visual C++ 2015 Redistributable.
    --> version 64 bits.
    --> apache 2.4.18
    --> php 7.0.2

    J'ai télécharger depuis ce site, deux packages :
    --> SQLSRV32.EXE
    pour obtenir :
    ==> php_pdo_sqlsrv_56_ts.dll
    ==> php_sqlsrv_56_ts.dll

    ==> php_pdo_sqlsrv_55_ts.dll
    ==> php_sqlsrv_55_ts.dll

    ==> php_pdo_sqlsrv_54_ts.dll
    ==> php_sqlsrv_54_ts.dll

    --> SQLSRV30.EXE
    ==> php_pdo_sqlsrv_53_ts.dll
    ==> php_sqlsrv_53_ts.dll

    Et j'ai fait les tests suivants :
    --> php 5.3.29 : ok
    --> php 5.4.45 : ok.
    C'est normal car je suis dans mon environnement vert et je suis en version 32 bits.

    --> php 5.5.31 : ko.
    --> php 5.6.17 : ko.
    Cela ne fonctionne pas car je suis dans mon environnement rouge et je suis en version 64 bits.
    Ce qui implique que je vais devoir basculer mon environnement rouge en 32 bits pour que cela fonctionne normalement.

    Oui, mais ce qui me pose problème, c'est que j'ai installé Microsoft SQL Server 2014 Express, version 64 bits !
    Et pour être plus précis : ExpressAndTools 64BIT\SQLEXPRWT_x64_FRA.exe

    Je ne comprends pas pourquoi je dois utiliser un driver 32 bits pour accéder à SQL Server qui est 64 bits.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 377
    Points : 19 049
    Points
    19 049
    Par défaut
    Salut Sabotage.

    J'ai migré vers une version 32 bits pour mon environnement rouge. Maintenant, ça fonctionne bien :
    --> php 5.6.17 : ok
    --> php 5.5.31 : ok
    --> php 5.4.45 : ok
    --> php 5.3.29 : ok
    Du coup, cela me fait quatre drivers, un par version php.

    J'ai fait deux tests supplémentaires, d'accessibilité à ma base de données SQL Server 'base'.

    1) PDO.
    Je pense que seul la connexion diffère dans cette approche. Le reste est commun à tous les SGBD.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
    /*-----------------------------------------------------*/
    /* Informations pour la connexion à la base de données */
    /*-----------------------------------------------------*/
     
    $dsn      = "sqlsrv:server=(local)\sqlexpress; database=base";
    $userid   = "";
    $password = "";
     
    $options  = array(
    	PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES french_ci_as",
    	PDO::ATTR_CASE               => PDO::CASE_LOWER,
    	PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION
    );
     
    /*----------------------*/
    /* Connexion au Serveur */
    /*----------------------*/
     
    try {
    	$link = new pdo($dsn, $userid, $password, $options);
    }
    catch (Exception $e)
    {
    	echo "Connection à SQL Server impossible : ", $e->getMessage();
    	die();
    }
    ?>
    Est-ce qu'il manque quelque chose ? Ou quelque chose d'inutile ?

    Voici pour la fermeture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    /*-------------*/
    /* Déconnexion */
    /*-------------*/
     
    $link = null;
     
    ?>
    Ça m'a toujours paru bizarre de mettre un 'NULL'. Est-ce la bonne façon de faire ?

    2) les API de Microsoft.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
    /*-----------------------------------------------------*/
    /* Informations pour la connexion à la base de données */
    /*-----------------------------------------------------*/
     
    $nom_du_serveur  = "(local)\sqlexpress";
    $info_connexion  = array("Database"=>"base");
     
    /*----------------------*/
    /* Connexion au Serveur */
    /*----------------------*/
     
    try {
    	$link = sqlsrv_connect($nom_du_serveur,$info_connexion);
    }
    catch (Exception $e)
    {
    	echo "Connection à SQL Server impossible : ", $e->getMessage();
    	die(print_r(sqlsrv_erros(), true));
    }
    ?>
    Et pour la déconnexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    /*-------------*/
    /* Déconnexion */
    /*-------------*/
     
    try {
    	sqlsrv_close ($link);
    }
    catch (Exception $e)
    {
    	echo "Fermeture de la Connection à SQL Server impossible : ", $e->getMessage();
    	die(print_r( sqlsrv_errors(), true));
    }
    ?>
    Merci pour ta patience, et ton aide, Sabotage !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je n'ai pas fais grand chose

    Concernant la deconnexion, il a lieu de toute façon a la fin du script. Le NULL n'est pas nécessaire, toutes les variables sont détruites dans tous les cas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 377
    Points : 19 049
    Points
    19 049
    Par défaut
    Salut à tous.

    Je reviens vers toi Sabotage, car j'ai à nouveau un problème avec SQL Server.

    Suite à une mauvaise manipulation sur mon ordinateur, j'ai dû réinstaller ma partition système (windows 10 pro).
    Et du même coup, j'ai réinstallé le SGBDR Sql Server, mais pas la même version que précédemment. J'ai mis une version plus légère :
    --> Express 64BIT\SQLEXPR_x64_FRA.exe
    C'est aussi une version 64 bit, comme précédemment !

    Comme tous mes tests étaient sur une autre partition, je n'ai rien perdu de ce que j'ai exposé précédemment dans ce sujet.

    En ligne de commande, j'ai pu recréer mon jeu d'essai, toujours sur l'instance service de nom "SQLExpress".
    Donc aucun problème de ce coté là. J'accède bien à SQL Server avec l'outil "sqlcmd" !

    J'ai voulu refaire le test d'accès depuis wampserver, en php avec le même code que précédemment, et j'ai maintenant un message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Connection à SQL Server impossible :
    SQLSTATE : 28000
    Code     : 18456
    Message  : [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Échec de l'ouverture de session de l'utilisateur 'AUTORITE NT\Système'.
     
    SQLSTATE : 42000
    Code     :  4060
    Message  : [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Impossible d'ouvrir la base de données "My_Base" demandée par la connexion. La connexion a échoué.
     
    SQLSTATE : 28000
    Code     : 18456
    Message  : [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Échec de l'ouverture de session de l'utilisateur 'AUTORITE NT\Système'.
     
    SQLSTATE : 42000
    Code     :  4060
    Message  : [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Impossible d'ouvrir la base de données "My_Base" demandée par la connexion. La connexion a échoué.
    Je remets l'extrait du code que j'ai utilisé pour ce test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php
    /*-----------------------------------------------------*/
    /* Informations pour la connexion à la base de données */
    /*-----------------------------------------------------*/
     
    $nom_du_serveur  = "(local)\SQLExpress";
    $info_connexion  = array("Database"=>"My_Base", "UID"=>"", "PWD"=>"");
     
    /*----------------------*/
    /* Connexion au Serveur */
    /*----------------------*/
     
    if (!($link = sqlsrv_connect($nom_du_serveur,$info_connexion)))
    {
    	echo "Connection à SQL Server impossible : ";
     
    	$errors = sqlsrv_errors();
     
    	echo "<pre>";
     
    	foreach ($errors as $key => $values)
    	{
    		echo 'SQLSTATE : '.substr('     '.$values['SQLSTATE'], -5)."\n";
    		echo 'Code     : '.substr('     '.$values['code'],     -5)."\n";
    		echo 'Message  : '.$values['message']."\n\n";
    	}
     
    	echo "</pre>";
    	die();
    }
    ?>
    J'ai poursuivi mes investigations car j'ai essayé de comprendre d'où venait le problème, mais je suis actuellement bloqué.
    Avant de tout réinstallé, la connexion vers sql server fonctionnait correctement.

    Pour mes test, j'ai utilisé le driver "sqlsrv" et j'ai fait la même chose avec le "PDO sqlsrv". Même résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Connection à SQL Server impossible : SQLSTATE[28000]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Échec de l'ouverture de session de l'utilisateur 'AUTORITE NT\Système'.
    Qu'est-ce qui à bien pu changer entre ces deux installations ?

    1) mon SGBDR Sql server en dans la version 64 bits. Les drivers sont en 32 bits, ainsi que la version php et apache que j'utilise sous WampServer.
    Y-a-t-il un quelconque problème de compatibilité ?
    Je ne le pense pas car cela fonctionnait avant que je réinstalle tout.

    2) je n'ai pas trop fait attention, mais dans "panneau de configuration", puis dans "programmes et fonctionnalités", je crois que j'avais une version 32 bits.
    Le problème est que je ne me souviens plus de quoi il s'agissait, mais cela concernait bien "SQL Server".
    Cela m'avait paru bizarre d'avoir une version 32 bits alors que j'avais chargé la version 64 bits.
    Est-ce qu'il me manque quelque chose dans mes chargements pour pouvoir accéder à "SQL Server" depuis le driver "sqlsrv" en version 32 bits ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/08/2010, 13h19
  2. Problème de connexion à Microsoft SQL Server externe
    Par jcr dans le forum Bases de données
    Réponses: 7
    Dernier message: 21/05/2010, 15h06
  3. [ZF 1.9] Connexion à Microsoft SQL Server 2005
    Par blaise4714 dans le forum Zend_Db
    Réponses: 10
    Dernier message: 07/11/2009, 09h35
  4. [SQL-Server] PHP et Microsoft SQL server 2000
    Par Jmy34 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/09/2008, 13h15
  5. PHP et Microsoft SQL server ?
    Par DreamNooby dans le forum Débuter
    Réponses: 3
    Dernier message: 07/05/2008, 23h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo