Question

Cette question est similaire à la formulaire de liste déroulante PHP multiple à envoyer à MySQL , mais avec une torsion.

Supposons que nous ayons une sélection multiple HTML, qui est soumise à un serveur PHP.

Comment créer avec élégance une requête mysql avec une condition OR sur les valeurs d'une multi-sélection?

Par exemple, j'ai une multi-sélection avec une liste de sports. Comment faire:

SELECT * FROM sports WHERE sport.name=:sport1 OR sport.name=:sport2 OR sport.name=:sport3...
Était-ce utile?

La solution

Ceci n’a pas été testé, c’est juste une idée ...

Ceci n’a pas été testé, c’est juste une idée ...

<*>POST['sports'] = array('basketball', 'baseball', 'football', 'soccer'); $sql = sprintf("SELECT * FROM sports WHERE sport.name IN (%s)", implode( ',', array_fill(1,count(

Ceci n’a pas été testé, c’est juste une idée ...

<*>POST['sports']), '?') ) ); // SELECT * FROM sports WHERE sport.name IN (?,?,?,?) $st = $dbh->prepare($sql); // bind all values foreach(

Ceci n’a pas été testé, c’est juste une idée ...

<*>POST['sports'] as $i => $sport) { $st->bindValue( ++$i, $sport ); } $st->execute();

Autres conseils

SELECT * FROM sports WHERE sports.name IN ('football','hockey','soccer','trolling');
SELECT * FROM sports WHERE sport.name IN (basketball,baseball,football,soccer)

Devrait aboutir à

<*>POST['sports'] = array('basketball', 'baseball', 'football', 'soccer'); $sql = sprintf("SELECT * FROM sports WHERE sport.name IN (%s)", implode(',', <*>

Devrait aboutir à

<*>POST['sports']));

Devrait aboutir à

<*>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top