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 :

Récupérer des données de MSSQL avec PHP


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur Système Spatial
    Inscrit en
    Décembre 2022
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Système Spatial
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2022
    Messages : 8
    Par défaut Récupérer des données de MSSQL avec PHP
    Bonjour;
    Je suis débutant en PHP et je cherche à créer une petite page web qui permettrait d'afficher des données dans un graphique polaire. C'est la première fois que je pose une question dans un forum, je m'excuse donc en avance si je n'ai pas assez donné de détails.
    Pour cela j'ai besoin de récupérer des données que je génère dans une table MSSQL. Malheureusement je n'arrive pas à me connecter à ma base de données.

    Pour vous donner un peu plus de contexte, je travaille sur une machine virtuelle Ubuntu (version 20.04) dans laquelle j'ai installé Apache2, PHP7.4, PHP7.4-FPM et Docker qui m'a servi à créer deux containers (un pour la DB et un pour un script Python qui va écrire dans la DB).

    Voici le code du fichier index que j'utilise pour essayer d'abord de me connecter à la DB:
    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
    <?php
    echo "Test connection to MSSQL Server :";
    $username = "SA";
    $password = "yourStrong(!)Password";
    $dbName = "Sky";
     
    $servername = "AdressIP, Port";
    $connectionInfo = array("UID" => $username, "PWD" => $password, "Database" => $dbName);
     
    $conn = sqlsrv_connect($hostname, $connectionInfo);
     
    if($conn){
    echo "<br>Connection Established";
    }else{
    echo "<br>Connection Not Established";
    }
    ?>
    Et donc quand je lance la page je ne vois s'afficher que "Test connection to MSSQL Server".
    Après avoir cherché j'ai cru comprendre qu'il fallait peut-être installer des drivers Microsoft pour PHP et SQL Server. J'ai donc suivi le tutoriel suivant : https://learn.microsoft.com/en-us/sq...l-server-ver16 en l'adaptant à la version de PHP que j'utilise. J'ai réessayé et toujours pareil, seule la phrase "Test connection to MSSQL Server" s'affiche. Est-ce que quelqu'un aurait une idée de ce que j'aurais pu faire de mal?

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    avez-vous bien activé l'affichage des erreurs PHP ?
    regardez ces 2 réglages :
    https://www.php.net/manual/fr/errorf...display-errors
    https://www.php.net/manual/fr/errorf...rror-reporting

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur Système Spatial
    Inscrit en
    Décembre 2022
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Système Spatial
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2022
    Messages : 8
    Par défaut
    Citation Envoyé par mathieu Voir le message
    avez-vous bien activé l'affichage des erreurs PHP ?
    regardez ces 2 réglages :
    https://www.php.net/manual/fr/errorf...display-errors
    https://www.php.net/manual/fr/errorf...rror-reporting
    Top! Je savais pas qu'il fallait faire ça pour afficher les erreurs.
    J'ai donc ça comme message d'erreur qui s'est affiché ;

    Fatal error: Uncaught Error: Call to undefined function sqlsrv_connect() in /var/www/html/index.php:15 Stack trace: #0 {main} thrown in /var/www/html/index.php on line 15

    J'ai donc ajouté ces deux lignes au fichier php.ini (dont j'ai trouve l'adresse avec phpinfo()):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    extension=sqlsrv
    extension=pdo_sqlsrv
    Mais j'ai toujours le même problème.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Avez-vous installé les drivers ? Ils doivent être disponibles pour que vous puissiez les appeler.
    Voir ici: https://learn.microsoft.com/en-us/sq...l-server-ver16
    (Vérifiez que cette page correspond à votre version de Sql server)
    Je découvre ça en même temps que vous, mais il faut bien lire les prérequis.
    D'autre part, il peut y avoir des alternatives pour se connecter à une DB Sql server en PHP.
    Il y a longtemps de ça, il y avait (de mémoire) d'autres extensions.

    Accessoirement, évitez cette mauvaise habitude de se connecter en sa, c'est l'équivalent d'un compte root !
    Ca veut dire que si votre application est compromise (par exemple par le biais d'une injection SQL) non seulement un pirate pourrait dumper la DB mais aussi exécuter du code sur le serveur avec des privilèges élevés, dans le style invocation de la procédure stockée xp_cmd_shell

    Il devrait y avoir un compte avec juste les droits pour lire et écrire sur cette DB, normalement pas plus.
    Mais bon essayez déjà de faire fonctionner le truc

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur Système Spatial
    Inscrit en
    Décembre 2022
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Système Spatial
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2022
    Messages : 8
    Par défaut
    Citation Envoyé par binarygirl Voir le message
    Avez-vous installé les drivers ? Ils doivent être disponibles pour que vous puissiez les appeler.
    Voir ici: https://learn.microsoft.com/en-us/sq...l-server-ver16
    (Vérifiez que cette page correspond à votre version de Sql server)
    Je découvre ça en même temps que vous, mais il faut bien lire les prérequis.
    D'autre part, il peut y avoir des alternatives pour se connecter à une DB Sql server en PHP.
    Il y a longtemps de ça, il y avait (de mémoire) d'autres extensions.

    Accessoirement, évitez cette mauvaise habitude de se connecter en sa, c'est l'équivalent d'un compte root !
    Ca veut dire que si votre application est compromise (par exemple par le biais d'une injection SQL) non seulement un pirate pourrait dumper la DB mais aussi exécuter du code sur le serveur avec des privilèges élevés, dans le style invocation de la procédure stockée xp_cmd_shell

    Il devrait y avoir un compte avec juste les droits pour lire et écrire sur cette DB, normalement pas plus.
    Mais bon essayez déjà de faire fonctionner le truc
    Je m'y suis remis ce matin et j'ai réussi!
    Du coup, oui j'avais télécharger les drivers, sauf que je telechargais les drivers pour PHP-FPM (https://learn.microsoft.com/en-us/sq...u-with-php-fpm) au lieu de simplement télécharger les drivers de PHP (https://learn.microsoft.com/en-us/sq...ling-on-ubuntu). J'ai alors pu vérifier que les fichiers .ini de sqlsrv étaient disponibles grâce à phpinfo() :

    Nom : MicrosoftTeams-image (1).png
Affichages : 241
Taille : 37,4 Ko

    Et à partir de là c'était gagné, j'arrivais à me connecter et ont récupéré des données via des requêtes.
    Merci beaucoup pour les conseils sur la DB, j'appliquerais ça cet après-midi!

Discussions similaires

  1. récupérer des données json dans du php
    Par Eydiaze dans le forum Langage
    Réponses: 6
    Dernier message: 24/06/2019, 22h47
  2. [ODBC] Se connecter, lire, afficher des données bdd firebird avec php
    Par firebird1 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 12/02/2015, 11h01
  3. Enregistrer des données en masse avec PHP
    Par pas30 dans le forum Langage
    Réponses: 5
    Dernier message: 11/12/2012, 09h21
  4. Récupérer des données de jquery avec php
    Par Mo_Poly dans le forum jQuery
    Réponses: 3
    Dernier message: 08/10/2009, 17h54
  5. [Excel] Lire des données de excel avec php
    Par Eisy dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 09/03/2006, 17h00

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