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

Langage PHP Discussion :

[POO] Fermeture d'une connection SQL


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut [POO] Fermeture d'une connection SQL
    Salut,
    Je poste dans ce forum parce que le problème touche plus à ma classe qu'aux requêtes.

    J'ai un classe SQL (2 fonctions essentielles):

    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
    class db {
     var $connect;
     var $lines;
     var $query;
       var $where = array();
     
     # Connection
     function db() {
      global $paramHost, $paramUser, $paramPassword, $paramDatabase;
      $this->connect = mysql_connect($paramHost, $paramUser, $paramPassword) or die (mysql_error());
          mysql_select_db($paramDatabase, $this->connect);
     }
     
     # Fermeture de la connection
     function close() {
      mysql_close($this->connect);
     }
    }
    Quand j'ai une seule requête puis que je ferme ma connection, la ressource est trouvée et la connection bien fermée. Comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $db =& new db;
    while () {
       // etc
    }
    $db->close(); // fonctionne
    Si par contre je recréé une objet dans le while et que je tente de le fermer après, la ressource n'est pas trouvée, et une erreur Notice apparait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $db =& new db;
    while () {
       $db2 =& new db;
       // Etc
    }
    $db->close(); // fonctionne
    $db2->close(); // ressource non trouvée
    Je ne trouve pas la solution. D'ou une autre question: si la connection n'est pas fermée, est-ce un gros problème?
    Merci

  2. #2
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Salut,

    c'est lié au comportement par défaut de la fonction mysql_connect().
    En effet, tu ouvres une première connexion, puis tu aimerais en avoir une seconde avec exactement les mêmes paramètres. La fonction voit qu'une connexion est déjà ouverte, et récupère son handler, plutôt que d'en ouvrir une seconde.
    D'où le fait que lorsque tu fasses un close sur la première, la seconde soit closed également.
    Pour éviter celà, et si c'est vraiment nécessaire, alors il existe un paramètre à la fonction mysql_connect pour demander à ouvrir une nouvelle connexion dans tous les cas: regarde le param new_link de la doc de mysql_connect.

    Maintenant, en ce qui concerne l'usage de mysql_close, pour les connexions non persistentes, celles-ci sont automatiquement fermées à la fin de l'exec du script.
    Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure

  3. #3
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    C'est clair ça merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/01/2006, 10h45
  2. [ADO.NET] Erreur de connection à une DB SQL
    Par BilTCD dans le forum ASP
    Réponses: 4
    Dernier message: 10/08/2005, 15h11
  3. Connection a une BD SQL SERVER2000 ????
    Par pop bob dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/08/2005, 16h41
  4. Connection a une BD SQL SERVER Aidez Moi SVP????
    Par pop bob dans le forum Bases de données
    Réponses: 3
    Dernier message: 07/08/2005, 16h29
  5. Comment se connecter à une base SQL server
    Par zapia dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/10/2003, 17h39

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