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 :

Opérateur IN avec des paramètres [PDO]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Par défaut Opérateur IN avec des paramètres
    Bonjour,

    Je n'arrive pas à alimenter un paramètre qui est une liste avec l'opérateur IN en utilisant PDO.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $idList = array(40,68,70);
     
    $statment = $connection->prepare("select * from person where id in ( :idList )");
     
    $idString = "270,40, 50";
    $statment->bindParam('idList', $idString, PDO::PARAM_STR);
    $statment->execute();
    $playerIdList = $statment->fetchAll();
    J'ai essayé de mette les valeurs dans un tableau mais je ne suis pas arrivé.

    Merci d'avance pour votre aide.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonsoir,
    pourquoi ne pas plutôt utiliser bindValue() avec une boucle?

    Cordialement,
    DaRiaN.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Par défaut
    Merci pour la réponse.
    Ce code en effet fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $idList = array(40,68,70);
     
    $statment = $connection->prepare("select * from person where id in ( :id1, :id2, :id3 )");
     
    $statment->bindValue(':id1', $idList[0], PDO::PARAM_STR);
    $statment->bindValue(':id2', $idList[1], PDO::PARAM_STR);
    $statment->bindValue(':id3', $idList[2], PDO::PARAM_STR);
    $statment->execute();
    $playerIdList = $statment->fetchAll();
    Mais cela me pose un petit problème, je ne sais pas à l'avance le nombre d'id que j'aurais dans mon tableau. Je suppose que je suis pas le premier à rencontrer ce genre de problème. Mais je trouve pas de solution facile. Une autre idée?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Non, je pensais plus à quelque chose 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
    17
    18
    19
    <?php
     
      $idList = array(40,68,70);
     
      $req = 'select * from person where id in (';
     
      for ($i = 0; $i < count($idList); $i++) $req .= '?,';
     
      $req = substr($req, 0, strlen($req)-1).')';
     
      $statment = $connection->prepare($req);
     
      for ($i = 0; $i < count($idList); $i++)
       $statment->bindValue($i+1, $idList[$i], PDO::PARAM_INT);
     
      $statment->execute();
      $playerIdList = $statment->fetchAll();
     
    ?>

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Par défaut
    Bon j'ai trouvé une solution acceptable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $idList = array(40,68,70);
    $idList = implode(',',$idList); 
    $statment = $connection->prepare("select * from party_person where id in ( $idList )");
    $statment->execute();
    $playerIdList = $statment->fetchAll();
    C'est bien. Si vous avez d'autre solution, je suis preneur.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Vous avez du rater ma précédente réponse (une minute d'intervalle).

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

Discussions similaires

  1. [FLASH MX2004] Lancer une anim avec des paramètres ??
    Par gchanteux dans le forum Flash
    Réponses: 4
    Dernier message: 23/03/2005, 17h49
  2. Réponses: 6
    Dernier message: 24/02/2005, 09h44
  3. [ADO/Access] Appel d’une requête avec des paramètres
    Par Taxenna dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/12/2004, 14h58
  4. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  5. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11

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