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 :

Execution multi prepared statement [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Execution multi prepared statement
    Bonjour les amis,

    Je rencontre un problème à l'exécution d'un scripte PHP qui contient plusieurs prepared statement et plusieurs execute qui font appelle à des procédure stockées.

    voici le code:

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    if (isset($_POST['autoCom']) && !empty($_POST['autoCom'])) {
               $term = $_POST['autoCom'];
               $connexion = pdo();
               $connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
               $connexion->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
               $stmt = $connexion->prepare("CALL get_club(?)");
               $stmt->bindParam(1, $term);
               $stmt->execute();
               $tabElementDiv = array();
               while ($rows = $stmt->fetchAll()) {
                   foreach ($rows as $row) {
                      array_push($tabElementDiv,$row);
                   }
               }
               array_push($tabElementDiv, "eq");
               $stmt->closeCursor();
               $stmt2 = $connexion->prepare("CALL get_eq(?)");
               $stmt2->bindParam(1, $term);
               $stmt2->execute();
               while ($row = $stmt2->fetchAll()) {
                 foreach ($rows as $row) {
                   array_push($tabElementDiv,$row);
                 )
               }
               array_push($tabElementDiv, "cat");
               $stmt2->closeCursor();
               $stmt3 = $connexion->prepare("CALL get_cat(?)");
               $stmt3->bindParam(1, $term);
               $stmt3->execute();
               while ($row = $stmt3->fetchAll()) {
                    foreach ($rows as $row) {
                      array_push($tabElementDiv,$row);
                    }
               }
               array_push($tabElementDiv, "fin");
               $stmt3->closeCursor();
               // affichage contenu 
               print_r($tabElementDiv);
         //echo json_encode($tabElementDiv);
        }
    J'ai également tester les différentes procédure stockées sur le terminal MYSQL et me renvoient les bons résultats.

    Merci pour votre aide et votre temps.

  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
    Et quel est ton problème ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    et il n'y a que le résultat de la première exécution lors de l'affichage.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $stmt->execute();
    // for test check it here 
    print_r($tabElementDiv);

  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
    Il y a des trucs mal fichus dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     $tabElementDiv = array();
               while ($rows = $stmt->fetchAll()) {
                   foreach ($rows as $row) {
                      array_push($tabElementDiv,$row);
                   }
               }
    Tu mets le fetchAll dans une boucle alors que fetchAll comme son nom l'indique recupère tout d'un coup.
    Tu peux donc faire simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tabElementDiv = $stmt->fetchAll();
    Dans le deuxième et le troisième traitement tu as de plus interverti $rows et $row.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    MAJ du code mais toujours pas d'exécution des 2 autres statement.
    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
    32
    33
    34
    35
    36
    37
    38
     
    if (isset($_POST['autoCom']) && !empty($_POST['autoCom'])) {
               $term = $_POST['autoCom'];
               $connexion = pdo();
               $connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
               $connexion->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
               $stmt = $connexion->prepare("CALL get_club(?)");
               $stmt->bindParam(1, $term);
               $stmt->execute();
               $tabElementDiv = array();
               $rows = $stmt->fetchAll();
               foreach ($rows as $row) {
                      array_push($tabElementDiv,$row);
               }
               array_push($tabElementDiv, "eq");
               $stmt->closeCursor();
               $stmt2 = $connexion->prepare("CALL get_eq(?)");
               $stmt2->bindParam(1, $term);
               $stmt2->execute();
               $rows = $stmt2->fetchAll();
               foreach ($rows as $row) {
                      array_push($tabElementDiv,$row);
               }
               array_push($tabElementDiv, "cat");
               $stmt2->closeCursor();
               $stmt3 = $connexion->prepare("CALL get_cat(?)");
               $stmt3->bindParam(1, $term);
               $stmt3->execute();
               $rows = $stmt3->fetchAll();
               foreach ($rows as $row) {
                      array_push($tabElementDiv,$row);
               }
               array_push($tabElementDiv, "fin");
               $stmt3->closeCursor();
               // affichage contenu 
               print_r($tabElementDiv);
         //echo json_encode($tabElementDiv);
        }

  6. #6
    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
    Est-ce que tu as debugué un peu pour circonscrire le problème ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    oui des echo juste à l'entrée de chaque foreach le premier s'affiche les 2 autres non.

  8. #8
    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
    Si tu ne fais que le deuxieme traitement par exemple, ça fonctionne ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour ton aide j'ai résolu le problème qui venait de ma procédure, de mes requêtes imbriqués pour être plus précis .

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

Discussions similaires

  1. PREPARED STATEMENTS avec MS ACCESS sous Delphi 2007
    Par cobol60 dans le forum Bases de données
    Réponses: 1
    Dernier message: 13/12/2007, 08h59
  2. [ASE]Grand nombre de prepared statements et commit final
    Par Hansel dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 28/11/2007, 15h42
  3. prepared statement et like %?%
    Par pigpen dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/06/2007, 14h05
  4. Prepared statement et sequence
    Par RR instinct dans le forum JDBC
    Réponses: 2
    Dernier message: 23/01/2007, 08h38
  5. Réponses: 1
    Dernier message: 12/05/2006, 17h07

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