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 :

PDO et procédure stockée mysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de 0redd
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 141
    Points : 79
    Points
    79
    Par défaut PDO et procédure stockée mysql
    Bonsoir tous le monde
    Hier j'avais créé une procédure stockée mysql qui retoune plusieurs ligne, et donc tous marche bien, j'exécute sur la console et ça me retourne toutes les lignes,
    juste après j'ai essayé d'exécuter la procédure en pdo, et puis (normalement) , et ça me retourne toujours la 1ère ligne, d'ou l'erreur peut elle provenir ?

    procedure stocké;

    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
     
    CREATE DEFINER=`root`@`localhost` PROCEDURE `liste_films`()
    BEGIN
           DECLARE done INT DEFAULT 0;
           DECLARE var_id INT;
           DECLARE var_nom VARCHAR(40);
           DECLARE curseur1 CURSOR FOR SELECT id, nom FROM film;
     
           OPEN curseur1;  
           REPEAT
                   FETCH curseur1 INTO var_id, var_nom;
                   IF done = 0 THEN
                           SELECT var_id, var_nom;
                   END IF;
           UNTIL done
           END REPEAT;
     
           CLOSE curseur1; END
    code php PDO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $user = "root";
    $pass = "";
    $db   = new PDO('mysql:host=localhost;dbname=abachoum', $user, $pass);
    $stmt = $db->prepare("CALL Liste_Films()");			
    $nbrligneretournee = $stmt->execute();
    $result = $stmt->fetchAll();
    print_r($result);
    echo $nbrligneretournee; // affiche 1
    code php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    mysql_connect('localhost','root','');
    mysql_select_db('abachoum');
    $donnees = mysql_query("CALL Liste_Films()") or die(mysql_error());
    while( $resultat = mysql_fetch_array($donnees) ) {
          print_r($resultat);
          echo '<br \>';
    }
    merci d'avance pour votre aide

  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
    Est-ce que tu as le meme problème si tu fais des Fetch() ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier Avatar de 0redd
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 141
    Points : 79
    Points
    79
    Par défaut
    oui, ça donne toujours une seul ligne avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $db   = new PDO('mysql:host=localhost;dbname=abachoum', $user, $pass);
    $stmt = $db->prepare("CALL Liste_Films()");			
    $stmt->execute();
    while ($row = $stmt->fetch()) { 
         print_r($row);
    }
    ai-je normalement écris la procedure mysql correctement ? vu que je suis encors débutant..

  4. #4
    Membre régulier Avatar de 0redd
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 141
    Points : 79
    Points
    79
    Par défaut
    donc voilà, je pense que j'ai compris ce qui se passé, donc dejà y'a une erreur ( une boucle infinie) mais même après avoir réparer, le problème resté toujours le même.
    j'ai vu que le select s'exécuter n fois, donc a chaque fois , il donné le header ( id, nom ) puis après le résultat, une seule ligne par select est retournée ; et donc ça s'explique que je reçois qu'une seul ligne;

    pour corrigé j'ai tous simplement écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE PROCEDURE liste()
    BEGIN
      SELECT id, nom FROM from film;
    END
    je vois pas pourquoi j'y ai pas pensé dès le début,
    bref merci pour votre aide

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

Discussions similaires

  1. [MySQL] PHP.PDO Appel d’une procédure stockée MYSQL avec arguments IN, OUT et INOUT
    Par Depite dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/03/2015, 10h20
  2. procédure stockée mysql et zope
    Par airod dans le forum Zope
    Réponses: 1
    Dernier message: 26/05/2008, 22h20
  3. Procédures stockées mySQL
    Par sanguruk dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 07/12/2007, 16h05
  4. Procédures stockées Mysql 5
    Par pasnet74 dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 15/11/2006, 15h41
  5. Procédures stockées MySQL
    Par super dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 02/04/2004, 09h26

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