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 :

Requête multiple array [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 90
    Points : 48
    Points
    48
    Par défaut Requête multiple array
    Bonjour à tous,
    J'ai 3 tableaux issus de select multiple qui contiennent des chaînes de caractères : tab1, tab2 et tab3
    J'ai réussi une première requête dont la condition porte sur le premier tableau mais je ne parviens pas à ajouter des conditions pour les tableaux suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $liste1=implode("','",$tab1);
    $liste2=implode("','",$tab2);
    $liste3=implode("','",$tab3);				
     
    // Connection à la base de données 
    include("connectionBD.php"); 
     
    // Requete sur la base de données 
    $requete="SELECT * FROM table WHERE colonne1 IN ('".$liste1.'\')';
    $sortie=mysql_query($requete) or die ('ERREUR'.mysql_error());
    et je souhaiterai quelque chose de ce style (ne fontionne pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // Requete sur la base de données 
    $requete="SELECT * FROM table WHERE colonne1 IN ('".$liste1.'\') AND colonne2 IN ('".$liste2.'\') AND colonne3 IN ('".$liste3.'\')';
    $sortie=mysql_query($requete) or die ('ERREUR'.mysql_error());
    Il s'agit surement d'un problème de quote (',") mais je n'ai pas trouvé la solution. Aussi je viens solliciter votre aide.

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    // dans cet ordre
    include("connectionBD.php");
     
    $liste1 = "'".implode("', '", array_map('mysql_real_escape_string', $tab1))."'";
    $liste2 = "'".implode("', '", array_map('mysql_real_escape_string', $tab2))."'";
    $liste3 = "'".implode("', '", array_map('mysql_real_escape_string', $tab3))."'";
     
    $sql = "SELECT * FROM table WHERE colonne1 IN ({$liste1}) AND colonne2 IN ({$liste2}) AND colonne3 IN ({$liste3})";
    ?>
    Note bien que toutes les fonctions mysql_ sont obsolètes et il est conseillé de basculer soit sur PDO soit sur les mysqli_.
    Enfin il est préférable d'éviter les SELECT * FROM

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 90
    Points : 48
    Points
    48
    Par défaut
    Merci pour cette réponse rapide rawsrc.
    ton code fonctionne mais je ne parviens toujours pas à récupérer les enregistrements voulus. Je m'explique

    Ce code me renvoit logiquement "tous les enregistrements dont colonne1 est dans liste1". Il fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM table WHERE colonne1 IN ({$liste1})";
    Ce code devrait me renvoyer "tous les enregistrements dont colonne1 est dans liste1 et colonne2 est dans liste2". Or il ne me renvoit rien alors que des enregistrements correspondent à la requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM table WHERE colonne1 IN ({$liste1}) AND colonne2 IN ({$liste2})";
    J'ai essayé d'ajouter des parenthèses en me disant qu'il y avait des priorités, sans succès. Auriez-vous une explication?

    J'ai bien noté ta remarque pour PDO mais je n'ai pas encore pris le temps de me former.

    E/ Le problème est résolu. Il s'agissait d'une erreur de frappe.
    Merci beaucoup rawscr.

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

Discussions similaires

  1. [Mysql] Requêtes multiples simultanées
    Par bitardo dans le forum JDBC
    Réponses: 6
    Dernier message: 02/07/2007, 11h46
  2. [MySQL] mysql requête multiple
    Par Hayabusa dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/05/2007, 17h20
  3. [AJAX] Requêtes multiples
    Par sbk.no.gaara dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/08/2006, 17h43
  4. [AJAX] Ajax requêtes multiples
    Par Teufboy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/08/2006, 19h23
  5. [requête] multiple count
    Par mandrake_of_mandregas dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/01/2006, 20h05

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