Problème PHP / SQL
Résolu
richard_10
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
richard_10 Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
richard_10 Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis entrain de programmer un moteur de recherche pour mon site, et puis dès que je suis arrivé à l'endroit où je dois passer par une recherche approximative dans un champ, sa ne veut pas marché. Concrètement, voilà ce que j'ai pu réalisé:
Cette fonction ne renvoie absolument rien.Toutefois, ma base de données contient bien des résultats qui vont avec cette recherche.Merci pour votre aide.
Je suis entrain de programmer un moteur de recherche pour mon site, et puis dès que je suis arrivé à l'endroit où je dois passer par une recherche approximative dans un champ, sa ne veut pas marché. Concrètement, voilà ce que j'ai pu réalisé:
$req=$bdd->prepare("SELECT champ FROM TABLE
WHERE champ LIKE '% :champ %' ");
$req->execute(array("champ" => $_POST["motclef"] ));
$resultats=$req->fetchAll();
return $resultats;
Cette fonction ne renvoie absolument rien.Toutefois, ma base de données contient bien des résultats qui vont avec cette recherche.Merci pour votre aide.
10 réponses
-
$req=$bdd->prepare("SELECT champ FROM TABLE WHERE champ LIKE :champ "); $req->execute(array("champ" => '%' . $_POST["motclef"] . '%' )); $resultats=$req->fetchAll(); return $resultats;
il faut mettre les % en dehors de la requete -
Merci pour ta réponse,
Oui, j'avais essayé cela plusieurs fois, j'ai même réaliser toutes les combinaisons possibles. Mais bon, aucun résultat.Merci encore. -
Désolé, oups, j'avais pas vu, ce n'est pas champ = qu'il faut mettre, mais champ like...
$req=$bdd->prepare("SELECT champ FROM TABLE WHERE champ like '%:champ%' "); -
C'est déjà édité dans le message ...Cependant, rien ne vas :)
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
si tu utilise un PDO pour la connexion à la base de données j'ai ça :
$req = $bdd->query(" SELECT champ FROM table WHERE champ LIKE ' %".$_POST['motclef']."%' "); while($resultats = $req->fetch()) { // traitement des données } -
Salut et merci pour vos réponses. C'étais une faute de frappe neo, et là tout est édité.et bien , j'ai vérifié la valeur de l'index POST avant d'accéder à la fonction et sa donne bien une valeur ( que j'ai saisi ).J'ai tout esseyer. Toujours rien , je vais vous montrer ma requête :
function rech_pub() { global $bdd; $req=$bdd->prepare("SELECT id_publication, intitule_publication FROM publication WHERE intitule_publication LIKE '%:initule_publication%' "); $req->execute(array("intitule_publication" => $_POST["rech"])); $pub=$req->fetchAll(); return $pub; }-
vous pouvez nous dire ce qui s'affiche si vous faites ceci à la place ?
function rech_pub() { global $bdd; dump($bdd); $req=$bdd->prepare("SELECT id_publication, intitule_publication FROM publication WHERE intitule_publication LIKE '%:initule_publication%' "); dump($req); $req->execute(array("intitule_publication" => $_POST["rech"])); $pub=$req->fetchAll(); dump($pub); return $pub; }
Merci
-
-
Bonsoir,
Sa donne une erreur de syntaxte :
Fatal error: Call to undefined function dump() in C:\Program Files\EasyPHP-5.3.6.0\www\Model\recherche.php on line 23
Merci pour votre soutien -
Salut maka,
Merci pour ta réponse qui est en effet utile. Et bien oui, tout marche là grâce à toi.Merci encore ainsi que tous les autres qui ont soutenu ce message. -
Salut neo ,oui j'avais déjà essayer cela, mais sa ne marchait pas.En revanche, la solution proposée par maka fonctionne à fond. Merci neo pour ton temps
-
Bonjour,
essayez sans les espaces entre % et :champ et le % qui suit$req=$bdd->prepare("SELECT champ FROM TABLE WHERE champ='%:champ%' ");