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 :

intégre un "ou" dans un bindvalue [PDO]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2014
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 365
    Par défaut intégre un "ou" dans un bindvalue
    Bonjour,

    Est-il possible d'intégrer un "OR/OU" dans un bindvalue

    J'ai essayé le code suivant:
    - rien n'apparait à l"écran
    - aucun message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //Preparer la requete
    $sql = 'SELECT * FROM gdp WHERE Country_Code=? AND Indicator_Name_en=?';
    $requete2 = $connexion_bdd ->prepare($sql);
    //Associer des valeurs aux place holders
    $requete2->bindValue(1, 'FRA' OR 'TUR', PDO::PARAM_STR);
    $requete2->bindValue(2, 'GDP (current US$)', PDO::PARAM_STR);
    //Compiler et executer la requete
    $requete2->execute();
    //Recuperer toutes les donnees retournees
    foreach($requete2->fetchAll() as $donnee){
    	echo ('
    		<tr><td>' . $donnee['Country_Name_en'] . '</td><td>' . $donnee['1970'] . '</td></tr>
    	');
    }
    Cordialement

  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
    Par défaut
    - Dans une requête préparée, la requête est fixe, seule les valeurs sont variables. "OR" n'est pas une valeur.
    - En PHP 'FRA' OR 'TUR' vaut TRUE ('FRA' est vrai, 'TUR' est vrai, 'FRA' OR 'TUR' est donc vrai aussi), donc envoit donc TRUE dans ta requête

    Si tu as un nombre inconnu de valeurs, tu peux construire ta requête dynamiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $country = array('FRA', 'TUR');
     
    $sql = 'SELECT * FROM gdp WHERE Country_Code IN  (' . implode(',', array_fill(1, count($country),'?')) . ') AND Indicator_Name_en = ?';
    $sth = $connexion_bdd ->prepare($sql);
     
    $param = $country;
    $param[]= 'GDP (current US$)';
    $sth->execute($param);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2014
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 365
    Par défaut
    Merci Sabotage ça marche

    Et si j'ai plus de 2 place holders? Par exemple pour 4 place holders, l'écriture suivante est elle correcte?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $var0 = array('a', 'b');
    //Preparer la requete
    $sql = 'SELECT * FROM table WHERE var1 IN  (' . implode(',', array_fill(1, count($var0),'?')) . ') AND var2 = ? AND var3 = ? AND var4 = ? ';
    $sth = $connexion_bdd ->prepare($sql);
    //Associer des valeurs aux place holders
    $param = $var0;
    $param[]= 'c';
    $param[]= 'd';
    $param[]= 'e';
    //Compiler et executer la requete
    $sth->execute($param);
    Cordialement

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

Discussions similaires

  1. [vbnet 1.1]Inserer deux simple quote sans texte dans une db
    Par ChristopheOce dans le forum Windows Forms
    Réponses: 8
    Dernier message: 15/03/2007, 08h51

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