Insèrer ma variable dans une requête

Résolu
Bonjour,

Quelqun peut-il me dire ou se trouve mon erreur ?

si je fait

("SELECT * FROM recettes WHERE MATCH (recettes_titre) AGAINST ('mot')");

cela me revoi bien la ligne avec le mot "mot"

mais si j'insère ma variable comme ceci:

("SELECT * FROM recettes WHERE MATCH (recettes_titre) AGAINST '$rechercher'");


cela me retourne une erreur.

8 réponses

  1. Bonsoir

    Tu avais de parenthèses autour de ('mot'), pourquoi n'en mets-tu pas autour de '$rechercher' ?
    1. Alors, c'est que $rechercher ne contient pas 'mot'. As-tu affiché la requête générée ?
      1. Dans mon champ "rechercher" je saisis "mousse" et il ne me renvoi pa de donnée alors que dans phpmyadmin en faisant:

        SELECT * FROM recettes WHERE MATCH (recettes_titre) AGAINST ('mousse') LIMIT 0 , 30 


        Il me renvoi bien les recettes avec de la mousse comme je le souhaite.

        et dans $rechercher il y a bien "mousse"
        1. Alors ce n'est pas ta requête qui a un problème, c'est ton programme PHP.
          Peux-tu le montrer (en cachant tes mots de passe s'il y en a ?
          Inutile de tout montrer, donne seulement le code de connexion et l'appel à la requête
          1. Si je fais avec un like, cela fonctionne bien.

            $colname_rsRecherche = "-1";
            if (isset($_GET['rechercher'])) {
              $colname_rsRecherche = $_GET['rechercher'];
            }
            mysql_select_db($database_connexion, $connexion);
            $query_rsRecherche = sprintf("SELECT * FROM recettes WHERE MATCH (recettes_titre) AGAINST ('$rechercher')");
            $query_limit_rsRecherche = sprintf("%s LIMIT %d, %d", $query_rsRecherche, $startRow_rsRecherche, $maxRows_rsRecherche);
            $rsRecherche = mysql_query($query_limit_rsRecherche, $connexion) or die(mysql_error());
            $row_rsRecherche = mysql_fetch_assoc($rsRecherche);
            
            if (isset($_GET['totalRows_rsRecherche'])) {
              $totalRows_rsRecherche = $_GET['totalRows_rsRecherche'];
            } else {
              $all_rsRecherche = mysql_query($query_rsRecherche);
              $totalRows_rsRecherche = mysql_num_rows($all_rsRecherche);
            }
            $totalPages_rsRecherche = ceil($totalRows_rsRecherche/$maxRows_rsRecherche)-1;
            
            $queryString_rsRecherche = "";
            if (!empty($_SERVER['QUERY_STRING'])) {
              $params = explode("&", $_SERVER['QUERY_STRING']);
              $newParams = array();
              foreach ($params as $param) {
                if (stristr($param, "pageNum_rsRecherche") == false && 
                    stristr($param, "totalRows_rsRecherche") == false) {
                  array_push($newParams, $param);
                }
              }
              if (count($newParams) != 0) {
                $queryString_rsRecherche = "&" . htmlentities(implode("&", $newParams));
              }
            }
            $queryString_rsRecherche = sprintf("&totalRows_rsRecherche=%d%s", $totalRows_rsRecherche, $queryString_rsRecherche);
            ?>
            1. Plusieurs remarques :
              Laquelle des requêtes est prise en compte dans le cas dont tu parles ?
              $rsRecherche = mysql_query($query_limit_rsRecherche, $connexion) or die(mysql_error());
              ou
              $all_rsRecherche = mysql_query($query_rsRecherche);


              Et dans le code suivant :
              if (isset($_GET['rechercher'])) {
                $colname_rsRecherche = $_GET['rechercher'];
              }
              mysql_select_db($database_connexion, $connexion);
              $query_rsRecherche = sprintf("SELECT * FROM recettes WHERE MATCH (recettes_titre) AGAINST ('$rechercher')");

              À vue de nez, il ne devrait pas y avoir $colname_rsRecherche à la place de $rechercher ?
              As-tu fait echo $query_rsRecherche pour voir ce qu'il y a réellement dans ta requête ? (comme je te l'avais déjà suggéré)