Moteur de recherche pour son site avec like

Résolu
lecoriace Messages postés 122 Statut Membre -  
lecoriace Messages postés 122 Statut Membre -
Bonjour, j'ai créé un formulaire de recherche php. j'aimerai qu'il cherche tous les mots clés dans toutes les colonnes de ma base. voici la requête que j'ai faite mais j'ai l'impression que ça ne marche pas :
<? php $sql= "SELECT*FROM info WHERE noms LIKE ? OR prenom LIKE ?"
// Connexion à la base de données
include("pages/connect_db.php");

 $req = $pdo->prepare($sql);
 $req->execute(array('%'.$query.'%', '%'.$query.'%'));
 
 $count = $req->rowCount();
 
 if($count >=1){
 
 echo "oui";
 
 } else{
 
 echo "non";

?>


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.
A voir également:

1 réponse

jordane45 Messages postés 40050 Statut Modérateur 4 757
 
Bonjour,

Pour voir les éventuelles erreurs ... ajoute un bloc try/catch.
Ensuite... attention aux espaces dans ta requête .. et aux point-virgules en fin de ligne....

et plutot que d'utiliser les "?" .. je préfère nommer les variables dans les requête préparées...


<?php 
include("pages/connect_db.php");

$sql= "SELECT * FROM info WHERE noms LIKE :nom OR prenom LIKE :prenom";
$params = array( ":nom" =>'%'.$query.'%'
               , ":prenom" =>'%'.$query.'%');
// Connexion à la base de données

 try{
    $req = $pdo->prepare($sql);
    $req->execute($params);
    //On stocke le résultat de la requête dans un ARRAY
    $array_result = $req->fetchall();
 }catch(Exception $e) {
    echo "<br>ERREUR ! ".$e->getMessage()."<br>";
    echo "<br>params : <br>";
    print_r($params);
  }

 $count =$array_result  ? count($array_result) : 0;
 
 if($count >0){
   echo "oui";
 } else {
   echo "non";
 }

//Affichage des resultats (pour les tests ^^ )
print_r($array_result);


1
lecoriace Messages postés 122 Statut Membre 3
 
Merci c'est ok
0