Requête mysql avec REGEX
Bonjour,
J'ai un formulaire de recherche.
Dans ma base de données, ces dernières sont sous le format de chiffres séparés d'une virgule (1,11,15)
Pour retrouver les lignes contenant le chiffre 1 j'ai fais dans phpmyadmin:
Ce code fonctionne, mais j'ai du mal à le faire fonctionner dans mon code php...
J'ai essayé '.(^|,)$cat($|,).' mais ca ne fonctionne pas.
Comment faire ?
Merci
J'ai un formulaire de recherche.
Dans ma base de données, ces dernières sont sous le format de chiffres séparés d'une virgule (1,11,15)
Pour retrouver les lignes contenant le chiffre 1 j'ai fais dans phpmyadmin:
SELECT * FROM jeux_concours WHERE categorie REGEXP (^|,)1($|,)
Ce code fonctionne, mais j'ai du mal à le faire fonctionner dans mon code php...
J'ai essayé '.(^|,)$cat($|,).' mais ca ne fonctionne pas.
$datas = $database->pdo->prepare(('SELECT * FROM jeux_concours WHERE categorie REGEXP "(^|,)$cat($|,)"');
Comment faire ?
Merci
2 réponses
-
Hello,
Peut être comme ça :$datas = $database->pdo->prepare('SELECT * FROM jeux_concours WHERE categorie REGEXP (^|,)'.$cat.'($|,)'); -
Bonjour,
L'utilisation d'une Regex se justifie-t-elle vraiment ? Dans l'exemple que tu donnes, non, mais peut-être fais-tu des choses plus compliquées derrière.
Personnellement, j'aurais répondu à ton problème de la façon suivante :
SELECT * FROM jeux_concours WHERE categorie LIKE '1,%' OR categorie LIKE '%,1' OR categorie LIKE '%,1,%'
Je ne vois pas de façon plus simple.
La méthode "propre" consisterait à transformer le champ categorie en table (en utilisant une fonction à créer) et faire une requête standard dessus.
Xavier