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. 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é)
    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. 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. 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, c'est que $rechercher ne contient pas 'mot'. As-tu affiché la requête générée ?
            1. Bonsoir

              Tu avais de parenthèses autour de ('mot'), pourquoi n'en mets-tu pas autour de '$rechercher' ?