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 :

Requête preparée et classes


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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
    Par défaut Requête preparée et classes
    Bonjour à tous,

    Pris d'une frenesie classes et pdo, je ré-ecris plein de mes travaux.

    J'avais donc fais ce qu'il ne faut pas faire : y aller tête baissée et j'ai écris un truc comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class bdd {
      function insert_ville() {
         $sql = 'INSERT INTO ....';
         $sth = $dbc->prepare($sql);
         ....
         $sth->execute
      }
    }
    et puis j'ai réalisé que c'etait completement absurde de preparer des requetes si on les re-prepare a chaque traitement.

    Je me suis donc dit que j'allais preparer toutes mes requetes au début du script et apres mes fonctions ne feront que les executer.

    Mais alors je vais preparer des requetes pour rien puisque je ne vais pas toutes les utiliser à chaque traitement d'une page.

    A partir de la, je me suis dit d'arreter de penser et de demander aux gens qui savent.

    Pourriez-vous me conseiller ?

    Merci.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Par défaut
    Ton idée est bonne, tu t'es bien rendu compte que seulement ta requête change le reste est toujours identique. donc je te propose ce schéma.

    tu as une class bdd générique, qui sélectionne un requête, la prépare, l'exécute, enregistre les tuples, et fait toutes les actions que tu veux dessus, comme compter, etc...
    Une fois tout calculé tu récupères les données par des accesseurs.



    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
    class bdd {
     
    __construc()
    {
     
      1 - tu vas sélectionner ta requête
      2 - tu vas preparer en sélectionnant  tous les attributs préparés $sth = $dbc->prepare($this->mafonction());
      3 tu executes ($sth->execute)
      4 - $this->tuple = $sth->fetechall()....
      5 - tu comptes les résultats etc...
     
     
      } 
     
     function insert_ville() {
         return 'INSERT INTO ....';
        }
     
     function tuple()
      {
         return $this->tuple;
      }
     
     function nb()
      {
         return $this->nb;
      }
     
    .....
     
    }

    Laurent

  3. #3
    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
    Par défaut
    Merci cette réponse.

    Il y a cependant quelque chose que je ne comprends pas :

    si je prepare ma requete a chaque instanciation, je perds l'interet de la preparation puisqu'elle va être refaite à chaque appel dans le script.

    Il faudrait une fonction dans la classe qui fait la preparation et une autre qui fait l'execution.

    non ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Effectivement la question est intéressante. Il faudrait déjà savoir si les statements sont réutilisables lorsque la connexion a été coupée. Si oui la solution pourrait être de stocker les statements en session ou en BDD. En tous cas je n'ai rien vu dans la doc au sujet de la persistance des requêtes dans la BDD.

Discussions similaires

  1. Requête dans ma classe héritée de Zend_Db_Table_Row_Abstract
    Par chezdevelopping dans le forum Zend_Db
    Réponses: 9
    Dernier message: 12/11/2009, 17h36
  2. [PDO] Fetch avec while imbrique et requête preparée
    Par mensoif dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/06/2009, 12h36
  3. Requête d'une classe d'un autre projet
    Par ploxien dans le forum Hibernate
    Réponses: 1
    Dernier message: 14/11/2008, 18h00
  4. Requêtes preparées et autres questions
    Par matt42 dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/07/2007, 15h47
  5. [SQL] Requête dans une classe
    Par Klimium dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/12/2006, 21h12

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