Requête de recherche dans la BDD

Résolu
markaz Messages postés 357 Statut Membre -  
markaz Messages postés 357 Statut Membre -
Bonjour, J'ai une requête qui permet de rechercher selon des critères dans la BDD et retour le résultat à afficher. le souci est que la requête marche pas lorsqu'elle faire à partir des variable enoyées à la fonction de recherche. Mais quand je saisi directement dans la fonction les valeurs des variable tous est bon.
Après 2h de je ne comprend pas toujours à est le due le problème.

Fonction recherche avec variable qui ne renvoie rien
if(!empty($_GET['article'])) {
$list = searchArt2('code', $_GET['article'], $_SESSION['lang'], $_SESSION['lieu']);
}


function searchArticle($filter, $info, $lang, $lieu) {
$q = 'SELECT * FROM article WHERE '.$filter.' = "'.$info.'" AND lang = "'.$lang.'" AND lieu ="'.$lieu.'"' ;
$q = $connect_db->query($q);
$q->setFetchMode(PDO::FETCH_OBJ);
$list = $q->fetchAll();

return $list;
}


Par contre cette requête fonctionne
function searchArticle($filter, $info, $lang, $lieu) {
$q = 'SELECT * FROM article WHERE code = "prg" AND lang = "fr" AND lieu = "ld"' ;
$q = $connect_db->query($q);
$q->setFetchMode(PDO::FETCH_OBJ);
$list = $q->fetchAll();

return $list;
}


NB: voici le contenu de la requête qui marche:
SELECT * FROM article WHERE code = "pgr" AND lang = "fr" AND lieu ="ld"


2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    Peux tu tester ça et nous dire ce que ça t'affiche ?
     $q = "SELECT * 
               FROM article 
               WHERE $filter = '$info' 
               AND lang = '$lang' 
               AND lieu ='$lieu' ";
    
    echo "<pre>Requete:<br>".$q;
     $query = $connect_db->query($q);
     $query->setFetchMode(PDO::FETCH_OBJ);
     $list = $query->fetchAll();
     
       return $list;
    

    0
  2. markaz Messages postés 357 Statut Membre 5
     
    Merci voilà ce qui s'affiche:

    Requete:
    SELECT * 
    FROM article
    WHERE code = 'rsh'
    AND lang = 'fr'
    AND lieu ='ld'


    valeur renvoyée : array(0) { }

    ces même valeurs de variables quand les insert directement dans la requête il n y a pas de souci la requête renvoie les données.
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Tu as vu que la valeur de code n'est pas la même entre les deux requêtes ?
      rsh d'un côté prg de l'autre.... normal ?
      0
    2. markaz Messages postés 357 Statut Membre 5
       
      les valeurs sont lié à mon menu mais que se soit rsh ou prg le résultat est le même ça ne marche pas.
      0
    3. markaz Messages postés 357 Statut Membre 5
       
      J'ai fini par trouver le problème qui se posait au niveau de mes codes. les valeurs des variables ne correspondaient avec celle de table.
      0