problème requête mysql

WRInaute discret
bonjour,

j'ai un problème concernant une requête mysql :
soit un tableau : $tab = array ( 'bonjour' , 'merci' , 'au revoir' ) ;

je voudrais dans une requête mysql récupérer tous les enregistrements ne comportant ni 'bonjour' , ni 'merci' , ni 'au revoir'
je pourrais faire un NOT LIKE '%bonjour%' AND NOT LIKE '%merci%' ... mais mon tableau comporte en fait beaucoup d'éléments !

Comment faire ?

Merci :)
 
WRInaute passionné
tu peux utiliser implode avec un WHERE NOT IN
ca doit donner :
Code:
'NOT IN (' . implode(',', $tableau) . ')'
tu peux aussi faire avant :
Code:
function protege_chaine($string) {
	return '\'' . mysql_real_escape_string($string) . '\'';
}

$tableau = array_map('protege_chaine', $tableau_nom_protege);
 
Nouveau WRInaute
Tu as aussi une autre possibilité avec la fonction FIELD et toujours en utilisant implode

ça devrait donner une clause du genre :

Code:
"...WHERE FIELD (tonchamp," . implode(',',$tableau) . ") = 0..."

Attention par contre à mettre des apostrophes de part et d'autre de chacun de tes mots dans ton tableau !

Code:
$array[] = '\'mot\'';

Par contre n'ayant jamais utilisé cette fonction je n'ai aucune idée de la rapidité avec laquelle elle s'exécute.
 
Discussions similaires
Haut