J'essaie de faire une simple barre de recherche qui recherche dans ma base de données pour certains mots. Il est possible d'utiliser l'attribut similaire sans utiliser où? Je veux qu'il recherche toutes les colonnes pour les mots-clés, pas seulement. Actuellement j'ai ceci:
mysql_query("SELECT * FROM shoutbox WHERE name LIKE '%$search%' ")
Qui ne cherche évidemment que des noms avec l'entrée de recherche. J'ai essayé ces deux:
mysql_query("SELECT * FROM shoutbox LIKE '%$search%' ")
mysql_query("SELECT * FROM shoutbox WHERE * LIKE '%$search%' ")
et ni non plus travaillé. Est-ce quelque chose qui est possible ou y a-t-il une autre façon d'y aller?
Vous voudrez peut-être regarder la fonction correspondant () aussi bien par exemple:
SELECT * FROM shoutbox
WHERE MATCH(`name`, `foo`, `bar`) AGAINST ('$search')
Vous pouvez également ajouter du mode booléen à ceci:
SELECT * FROM shoutbox
WHERE MATCH(`name`, `foo`, `bar`) AGAINST ('$search') IN BOOLEAN MODE
Vous pouvez également obtenir les scores de pertinence et ajouter des clés FullText pour accélérer les requêtes.
Il n'y a pas de raccourci. Vous devez spécifier chaque colonne séparément.
SELECT * FROM shoutbox
WHERE name LIKE '%$search%'
OR foo LIKE '%$search%'
OR bar LIKE '%$search%'
OR baz LIKE '%$search%'
Là IS un raccourci !;)
SELECT * FROM shoutbox
WHERE CONCAT(name, foo, bar, baz) LIKE '%$search%'
cela ne montrera plus de lignes en double.
SELECT * FROM shoutbox
WHERE (name LIKE '%$search%'
OR foo LIKE '%$search%'
OR bar LIKE '%$search%'
OR baz LIKE '%$search%')