web-dev-qa-db-fra.com

MySQL - est-il possible d'utiliser comme sur toutes les colonnes d'une table?

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?

17
user2566387

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.

6
Dave

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%' 
15
JJJ

Là IS un raccourci !;)

SELECT * FROM shoutbox 
WHERE CONCAT(name, foo, bar, baz) LIKE '%$search%' 
6
esdiweb

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%') 
3
Harsha