Relier du PHP à un serveur SQL

-  
Bonjour,

voila je voudrais relier mon site php a une base de données déjà existante
mon code est le suivant :

<?php

// Le serveur est au format : <hôte>\<nom d'instance> ou
// <serveur>,<port> quand on utilise un port différent de celui par défaut
$server = 'SRVTest';

// Connexion à MSSQL

$link = mssql_connect($server, 'admin', 'mot de passe');

if(!$link) {
die('Erreur de connexion à MSSQL');
}
?>

or quand je lance mon site j'ai ce message d'erreur :
Fatal error: Call to undefined function mssql_connect() in C:\wamp\www\application_php\connexion_serveur.php on line 8

Donc go le codage sur la page connexion_serveur.php ci dessus.

help me!!! J'en peu plus de cette erreur et je ne la vois pas....

17 réponses

Résumé de la discussion

Le problème principal est l'erreur fatale 'Call to undefined function mssql_connect()' lors de la connexion à MSSQL depuis PHP, ce qui signale que l'extension MSSQL n'est pas activée ou que l'API est obsolète. Des conseils courants indiquent d'activer l'extension MSSQL dans le fichier php.ini (par exemple extension=php_mssql.dll) et de redémarrer le serveur, sans quoi mssql_connect reste complètement introuvable. Autres solutions proposées incluent l'installation du driver Microsoft PHP pour SQL Server (sqlsrv) et l'usage de PDO avec sqlsrv, ou l'adaptation du code vers des extensions modernes. En cas d'erreur 'could not find driver', c'est souvent lié au driver PDO manquant ou à l'incompatibilité entre PHP et SQL Server, ce qui pousse vers PDO_SQLSRV ou MS SQL Driver.

Bobot (l’IA à votre service)
  1. Bonjour

    L'extension mssql n'est visiblement pas activée.
    As-tu une ligne extension=php_mssql.dll dans ton fichier php.ini ?
    https://www.php.net/manual/fr/mssql.installation.php
    2
    1. oui c écrit : ;extension=php_mssql.dll

      donc ca devrai marcher non??

      jsui encore novice en code php
      0
    2. Non tu dois supprimer le ';'
      0
  2. Salut, Essaye avec mysqli_connect, on ne sait jamais
    0
    1. mysqli_connect, c'est pour mysql, pas mssql

      on ne sait jamais
      Si, on sait très bien que ça ne donnera rien..
      0
      1. alors je fais quoi je suis deseperer parce que en somme ce que je veu faire est simple
        si jarrive a me connecter a cet ***** base de donnée pour info je suis sur netgbeans pour le codage
        donc avec wamp
        et ma base de donner est sur sql serveur management

        si ça peu aider
        0
        1. alors je fais quoi
          Tu lis la réponse plus bas.
          0
          1. S'il y a un ; au début de la ligne, c'est que la ligne est en commentaire...
            Enlève le ;
            0
            1. que je l'enlève ou non ça ne change rien malheureusement
              0
            2. Après avoir enlevé le ; as tu fait un restart du service ?
              0
            3. As-tu redémarré Apache ?
              0
            4. oui j'ai tout redémarrer même l'ordi
              0
          2. 1 - Après avoir supprimé le ; et redémarré Apache, le message d'erreur était-il toujours Call to undefined function mssql_connect() ?

            2 - Quelle version de PHP as-tu ? Je doute que tu aies une version sans support mssql, alors que la ligne ;extension=php_mssql.dll était présente dans ton php.ini.
            0
            1. ma version php est 5.3.13
              0
            2. au pire peut ton connecter sql serveur avec des pdo
              et si oui comment faire ? jusqu'a présent j'ai toujour bosser avec des base de donnée en localhost
              0
          3. PDO ne s'oppose pas à localhost, ce n'est pas le problème.
            Dans le manuel PHP, il proposent cette solution :
            https://docs.microsoft.com/en-us/sql/connect/php/microsoft-php-driver-for-sql-server?redirectedfrom=MSDN&view=sql-server-ver15
            Je ne peux que t'inviter à la suivre.

            Enfin si, je peux te proposer autre chose mais je ne sais pas si c'est acceptable pour ton application : ne peux-tu pas transférer le contenu de ta base MS SQL vers une base mySQL, pour laquelle tu auras tous les outils et le support en PHP ?
            0
            1. au départ c'est ce que je pensais faire transforme le mssql en mysql mais le problème c que je fais cette application en stage dans une entreprise et il est plus simple pour eux de garder la structure actuelle de la base de données
              0
            2. je vais voir cela j'ai fait un test avec ces codes la mais j'ai un message d'erreur, vous verrez peut être mieux que moi d'ou viens le probleme:
              apparement le probleme viendrai dla ligne include "/pdo/pdo_connect.php"; mais je reste sans voix

              <?php
              include "/pdo/pdo_connect.php";

              function readAllContact()
              {
              $pdo= open();
              $query = 'SELECT *nom_contact FROM contact;';
              $cursor = $pdo->query($query);
              $lescontacts = $cursor->fetchAll();
              return $lescontacts;
              }

              ?>

              et voici le code que j'ai mis pour me connecter a la base de donnée

              <?php
              function open()
              {
              try {
              $connStr =new PDO("sqlsrv:Server=SRVTest;Database=woutils");;
              $arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
              $pdo = new PDO($connStr, 'admin', 'password', $arrExtraParam);
              $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
              return $pdo;
              }
              catch(PDOException $e) {
              $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
              die($msg);
              }

              }

              ?>
              0
          4. j'ai un message d'erreur
            Il ne sert pas à grand chose de dire que tu as un message d'erreur : il faut recopier le message.
            À mon avis, il te dit qu'il ne trouve pas le fichier à inclure /pdo/pdo_connect.php. Tel que tu l'as écrit, ça suppose que ton dossier /pdo est à la racine de ton disque dur, ce dont je doute. Enlève le / avant pdo, si ce dossier est bien un sous-dossier de celui qui contient ton script.
            0
            1. oui pardon jai oublier de mettre le messages d'erreur

              ( ! ) Warning: include(/pdo/pdo_connect.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory in C:\wamp\www\application_php\pdo\pdo_contact.php on line 2
              Call Stack
              # Time Memory Function Location
              1 0.0062 370720 {main}( ) ..\index.php:0
              2 0.0124 376080 include( 'C:\wamp\www\application_php\pages\lister_contact.php' ) ..\index.php:31
              3 0.0172 380240 include( 'C:\wamp\www\application_php\pdo\pdo_contact.php' ) ..\lister_contact.php:3

              ( ! ) Warning: include() [<a href='function.include'>function.include</a>]: Failed opening '/pdo/pdo_connect.php' for inclusion (include_path='.;C:\php\pear') in C:\wamp\www\application_php\pdo\pdo_contact.php on line 2
              Call Stack
              # Time Memory Function Location
              1 0.0062 370720 {main}( ) ..\index.php:0
              2 0.0124 376080 include( 'C:\wamp\www\application_php\pages\lister_contact.php' ) ..\index.php:31
              3 0.0172 380240 include( 'C:\wamp\www\application_php\pdo\pdo_contact.php' ) ..\lister_contact.php:3

              ( ! ) Fatal error: Call to undefined function open() in C:\wamp\www\application_php\pdo\pdo_contact.php on line 6
              Call Stack
              # Time Memory Function Location
              1 0.0062 370720 {main}( ) ..\index.php:0
              2 0.0124 376080 include( 'C:\wamp\www\application_php\pages\lister_contact.php' ) ..\index.php:31
              3 0.0211 379504 readAllContact( ) ..\lister_contact.php:5
              0
          5. 1 - S'il te plaît utilise le bouton 'Répondre' pour répondre : une réponse n'est pas un commentaire.
            2 - Pourquoi ne tiens-tu pas compte de toute ma réponse ? Je t'avais expliqué que l'erreur était probablement celle-là, et comment y remédier : qu'as-tu fait de ces indications ? C'est pénible pour moi de toujours rappeler ce que je disais dans le message précédent.
            0
            1. j'ai enlever le / comme tu le disais mais ca ne change rien du tout
              j'ai tout fait rien ne marche -_-
              0
              1. Tu l'as enlevé pour me faire plaisir ou tu as compris pourquoi je te le demandais ? Car tu ne devrais rien faire sans comprendre pourquoi : je ne suis pas devant ton PC, je ne sais pas comment sont organisés tes répertoires. J'essaye de deviner et de te guider, mais toi tu DOIS comprendre ce que tu fais pour adapter mes suggestions.

                C'est à TOI et pas à moi de savoir où se trouve ton fichier à inclure par rapport à ton script, et d'écrire le chemin en conséquence. Ce n'est pas un problème de base de données, ça, c'est du PHP tout simple.
                0
                1. bah on va dire que j'ai encore du mal avec tout ça....
                  je comprend oui mais peut être pas tout completement...
                  0
                  1. Du mal avec tout quoi ? Il s'agit simplement - pour le message "failed to open stream:" - de savoir où se trouve ton fichier et d'écrire le chemin d'accès correctement.
                    0
                    1. mon dossier est composer de la facon suivante
                      dans un dossier application php on a :
                      - 1 dossier pages ou il se trouve toute les pages de l'application
                      -1 dossier pdo pour tout ce qui concerne les requete sql
                      et un index.php
                      0
                      1. bon j'ai tout remis dans un seul et même dossier
                        la plus d'erreur enfin plus d'erreur si une. elle persiste la sale bête...

                        avec ce code la:
                        <?php
                        function open()
                        {
                        try {
                        $connStr =new PDO("sqlsrv:Server=SRVTest\SQL2008R2;Database=woutils");;
                        $arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
                        $pdo = new PDO($connStr, 'sa', 'p', $arrExtraParam);
                        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                        return $pdo;
                        }
                        catch(PDOException $e) {
                        $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
                        die($msg);
                        }

                        }

                        ?>
                        le message d'erreur est ERREUR PDO dans C:\wamp\www\genesys\connexion.php L.5 : could not find driver

                        bon est avec ce code ci (code du départ)
                        <?php

                        // Le serveur est au format : <hôte>\<nom d'instance> ou
                        // <serveur>,<port> quand on utilise un port différent de celui par défaut
                        $server = 'SRVTest\SQL2008R2';

                        // Connexion à MSSQL
                        $link = mssql_connect($server, 'sa', 'p');

                        if(!$link) {
                        die('Erreur de connexion à MSSQL');
                        }
                        ?>

                        le message d'erreur est ( ! ) Fatal error: Call to undefined function mssql_connect() in C:\wamp\www\genesys\connexion.php on line 8
                        Call Stack
                        # Time Memory Function Location
                        1 0.0049 368024 {main}( ) ..\index.php:0
                        2 0.0088 371304 include( 'C:\wamp\www\genesys\rechercher_contact.php' ) ..\index.php:30
                        3 0.0129 375432 include( 'C:\wamp\www\genesys\requetecontact.php' ) ..\rechercher_contact.php:8
                        4 0.0167 378232 include( 'C:\wamp\www\genesys\connexion.php' ) ..\requetecontact.php:2
                        0
                        1. une idée??
                          0