Probleme avec clause WHERE

Eléphant du PHP | 130 Messages

14 mars 2006, 21:39

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. :(

Mammouth du PHP | 19672 Messages

14 mars 2006, 22:03

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 130 Messages

15 mars 2006, 08:39

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

Mammouth du PHP | 19672 Messages

15 mars 2006, 11:12

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 ."%';";
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 130 Messages

15 mars 2006, 20:19

Merci Cyrano, j'ai résolu mon problème. :)