Page 1 sur 1

Probleme avec clause WHERE

Posté : 14 mars 2006, 21:39
par bravegars
Bonsoir,

Je voudrais rechercher un mot dans une table et récupérer un tableau avec toutes les lignes qui contienent ce mot. Mais j'y arrive pas... grrr

Voilà le code que j'ai :

Code : Tout sélectionner

$prix="douze"; $mareq = "SELECT centre FROM clubmed WHERE '$prix' REGEXP '$prix'"; $dev = mysql_query ($mareq) or die ('Erreur SQL !'.$sql.'<br>'.mysql_error()); $tab = mysql_fetch_array($dev);
En fait je recherche tous les champs de la table clubmed qui contienent $prix, et je voudrais récupérer toutes les lignes correspondantes en prenant le champ centre comme valeurs dans le tableau. :(

Posté : 14 mars 2006, 22:03
par Cyrano
Le problème est dans ta clause WHERE :
Si on décortique une requête de ce type, on a:
- SELECT "nom d'une ou plusieurs colonnes"
- FROM "nom d'une ou plusieurs tables"
- WHERE "nom d'une colonne" (= | > | < | LIKE | REGEXP | ...) "valeur de comparaison"

Entre "WHERE" et "REGEXP" dans ta requête, tu utilises une valeur et non le nom d'une colonne;
La valeur attendue après "REGEXP" doit être une expression régulière et donc respecter une syntaxe particulière

As-tu regardé un peu la doc sur l'utilisation de REGEXP ?

Posté : 15 mars 2006, 08:39
par bravegars
Bonjour,

Merci pour tes explications Cyrano.
Le problème c'est que j'y connais rien aux expressions régulières et même après avoir lu la page que tu m'as conseillé je ne sais absolument pas quoi mettre après le REGEXP.

Est-ce qu'il n'est pas possible de faire une recherche sur tous les champs qui m'intéresse apres la clause WHERE, ça m'évitera de me casser la tête sur les expressions regulieres ?

WHERE (champ1,champ2,champ3,champ4)='$prix'

Je sais que cet exemple n'est pas correct mais c'est ce que je voudrais si c'est possible. Merci

Posté : 15 mars 2006, 11:12
par Cyrano
Alors dans ce cas, tu peux faire quelqe chose comme:
$sql = "...
WHERE champ1 LIKE '%". $prix ."%' 
OR champ2 LIKE '%". $prix ."%' 
OR champ3 LIKE '%". $prix ."%' 
OR champ4 LIKE '%". $prix ."%' 
OR champ5 LIKE '%". $prix ."%';";

Posté : 15 mars 2006, 20:19
par bravegars
Merci Cyrano, j'ai résolu mon problème. :)