Pregunta

Esta pregunta es similar a Formulario de cuadro desplegable múltiple de PHP Enviar a MySQL , pero con un toque.

Supongamos que tenemos una selección múltiple de HTML, que se envía a un servidor de PHP.

¿Cómo creas elegantemente una solicitud de mysql con una condición OR en los valores de una selección múltiple?

Por ejemplo, tengo una selección múltiple con una lista de deportes. Cómo hacer:

SELECT * FROM sports WHERE sport.name=:sport1 OR sport.name=:sport2 OR sport.name=:sport3...
¿Fue útil?

Solución

Esto no está probado, solo es una idea ...

Esto no está probado, solo es una idea ...

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

Esto no está probado, solo es una idea ...

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

Esto no está probado, solo es una idea ...

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

Otros consejos

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

Debería resultar en

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

Debería resultar en

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

Debería resultar en

<*>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top