Insèrer ma variable dans une requête

Résolu/Fermé
Messages postés
1156
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
24 janvier 2022
-
Messages postés
1156
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
24 janvier 2022
-
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


Bonsoir

Tu avais de parenthèses autour de ('mot'), pourquoi n'en mets-tu pas autour de '$rechercher' ?
Messages postés
1156
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
24 janvier 2022
105
De cette façon, il ne me retourne rien.
Alors, c'est que $rechercher ne contient pas 'mot'. As-tu affiché la requête générée ?
Messages postés
1156
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
24 janvier 2022
105
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"

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
Messages postés
1156
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
24 janvier 2022
105
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);
?>

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é)
Messages postés
1156
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
24 janvier 2022
105
C'était bien ça et merci beaucoup !