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 exécution de requête paramétrée (aucun résultat ne s'affiche) [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 90
    Points : 54
    Points
    54
    Par défaut PDO et exécution de requête paramétrée (aucun résultat ne s'affiche)
    Bonjour à tous,
    j’aimerais afficher le résultat d'une requête paramétrée, lorsque je remplace mes paramètres par des valeurs m'affiche les valeurs mais lorsque j'utilise mes paramètres m'affiche un tableau vide.
    pour la connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try
          {
    	 $cnx = new PDO('mysql:host='.$serveur.';dbname='.$bdd,$user,$pass);
    	 $cnx->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
          }
        catch(Exception $e) //PDOException 
          {
    		 $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
              die($msg);
          }
    voici mon 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
    <?php
     
     if(isset($_POST) && !empty($_POST['numcarte']) && !empty($_POST['numpol']))
     {
      $numcarte = htmlspecialchars($_POST['numcarte']);	
      $numpol = htmlspecialchars($_POST['numpol']);	
     
      $q = array( ':pnumpol' => $numpol,
                  ':pnumcart' => $numcarte);
      $sql = 'SELECT * FROM membre WHERE numpol =:pnumpol AND numcart =:pnumcart';
      $req = $cnx->prepare($sql);
      $req->execute($q); 
      $data = $req->fetchAll(); // pour récupérer le resultat
     
     if($data !== false)
       {
    	echo 'Les données sont disponibles ici :';
    	print_r($data);
       }
    else
      {
    	echo 'Aucun résultat disponible.';
      }
     }
     
    ?>
    merci pour votre aide

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    fetchAll renvoie toujours un array, donc ta comparaison stricte de marche pas, fait juste !=

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    c'est pareil, il me renvoie un tableau vide

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est que requete ne renvoie pas de résultat, et t'as pas a faire de htmlspecialchars, pas besion non plus de mettre les ':' dans $q

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    justement c'est ce que j'ai dit la requête ne me ramène pas de valeur, tandis lorsque je remplace les paramètres par des valeurs par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT * FROM membre WHERE numpol = ED1235 AND numcart =00056478'
    la requête me ramène un résultat

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    fait un var_dump($q);

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    c'est pareil , il m'affiche
    array
    empty

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par babacan Voir le message
    c'est pareil , il m'affiche
    array
    empty
    non le var_dump doit t'afficher l'array

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    il renvoie un array() qui ne contient pas de donnée, alors que quand je fais un test comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($req->execute($q));
    , il me retourne true, cela me faire dire que la requête me renvoie un résultat mais qui ne s'affiche pas

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est pas possible que ça te renvoie que array()

    tu fais bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(isset($_POST) && !empty($_POST['numcarte']) && !empty($_POST['numpol']))
     {
      $numcarte = htmlspecialchars($_POST['numcarte']);	
      $numpol = htmlspecialchars($_POST['numpol']);	
     
      $q = array( ':pnumpol' => $numpol,
                  ':pnumcart' => $numcarte);
      var_dump($q);
    }

    ps : isset($_POST) sert a rien

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    oui c'est ce que je vais et le var_dump($data) m'affiche un tableau sans valeur, me permet de vérifier le clic sur mon bouton affiche,

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par babacan Voir le message
    oui c'est ce que je vais et le var_dump($data) m'affiche un tableau sans valeur,
    $q pas $data, lis bien

    Citation Envoyé par babacan Voir le message
    me permet de vérifier le clic sur mon bouton affiche
    $_POST existe toujours même sans formulaire, si tu veux tester la soumission met une valeur dans ton champs submit

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    var_dump ($q) me donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    array
      'pnumpol' => string '0000050' (length=7)
      'pnumcart' => string '0000000082' (length=10)

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    et faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM membre WHERE numpol = '0000050' AND numcart = '0000000082'
    te renvoie des résultats ?

  15. #15
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    oui avec ça il un résultat comme ceci
    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
    array
          'NUMEMBR' => string '4' (length=1)
          0 => string '4' (length=1)
          'NUMFAM' => string '22' (length=2)
          1 => string '22' (length=2)
          'NUMPOL' => string '0000050' (length=7)
          2 => string '0000050' (length=7)
          'NUMAVT' => string '0' (length=1)
          3 => string '0' (length=1)
          'ANNEE' => string '2007' (length=4)
          4 => string '2007' (length=4)
          'POLREMPL' => string 'S00018' (length=6)
          5 => string 'S00018' (length=6)
          'NUMAVTO' => string '' (length=0)
          6 => string '' (length=0)
          'NUMCLI' => string '26' (length=2)
    par contre avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT * FROM membre WHERE numpol = :pnumpol AND numcart = :pnumcart';
    il n'affiche rien

  16. #16
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    essaye avec les "?"

  17. #17
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    Toujours pareil

  18. #18
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par babacan Voir le message
    Toujours pareil
    si tu fais juste un query

  19. #19
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $cnx->query("SELECT * FROM membre WHERE numpol =".$cnx->quote($numpol, PDO::PARAM_STR)." AND numcart =".$cnx->quote($numcarte, PDO::PARAM_STR));
        foreach  ($cnx->query("SELECT * FROM membre WHERE numpol =".$cnx->quote($numpol, PDO::PARAM_STR)." AND numcart =".$cnx->quote($numcarte, PDO::PARAM_STR)) as $row) {
            print $row['NUMPOL']. "\t" ;
    		print $row['NUMFAM']. "\t" ;
    		print $row['NOMEMBR']. "\t" ;
    		print $row['NOM']. "\t" ;
    		print $row['PRENMEMBR']. "\t" ;
    	}
    Aucune valeur n'apparait

  20. #20
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    fait juste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = "SELECT * FROM membre WHERE numpol =".$cnx->quote($numpol, PDO::PARAM_STR)." AND numcart =".$cnx->quote($numcarte, PDO::PARAM_STR);
     
    $result = $cnx->query($sql);
     
    var_dump($sql, $result);

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [ODBC] Exécuter une requête sur le résultat d'une autre
    Par che0po dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/05/2012, 11h29
  2. [PDO] PDO et exécution de requête
    Par redoran dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/02/2012, 15h54
  3. [WD10] exécution de requête paramétrée
    Par cool dans le forum WinDev
    Réponses: 4
    Dernier message: 22/10/2009, 14h46
  4. Requète paramétrée avec résultat variable
    Par slackjayo dans le forum Access
    Réponses: 2
    Dernier message: 28/04/2006, 20h39
  5. [ADO.Net][C#/Mysql] Comment exécuter une requête paramétrée?
    Par wremacle dans le forum Accès aux données
    Réponses: 6
    Dernier message: 07/02/2006, 16h55

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