mon code est ce,base de données recherche question PHP
$query = "SELECT * FROM `cars` WHERE (color LIKE '%". $key ."%' OR name LIKE '%". $key ."%') AND enabled = 'yes' ORDER BY `ID`";
base de données
est comme ce
ID color name enabled
---- ------ -------- ---------
1 red red car yes
2 blue blue car yes
3 brown brown car yes
r
quand je recherche avec la touche "rouge", il retourne premier champ (ID 1) mais si je recherche avec "voiture rouge" il ne retourne rien.
comment puis-je effectuer une recherche dans les 2 champs?
grâce
EDIT: i supports fixes mais je ne peux pas obtenir des résultats avec plus de 1 clés de mot.
fait l'essai avec pas de chance
$query = "SELECT * FROM `cars` WHERE (MATCH (color,name) AGAINST ('$key' IN BOOLEAN MODE)) AND enabled = 'yes' ORDER BY `ID`";
EDIT 2: Peter est juste. Il n'y a pas de problème dans la requête. bizarre chose est -je utiliser ce
$key = $_GET['key'];
si $ _GET [ 'key'] est plus de 1 mot, clé $ est de retour à vide pour une raison.
Il va sans dire que vous devriez faire attention à injection sql. – Joe
Je ne pense pas que ce soit la cause, mais vous devriez vraiment mettre des parenthèses autour de vos critères WHERE. L'ordre dans lequel vos AND et ORs sont résolus peut ne pas être ce que vous attendez. –