2012-02-28 22 views
27

Duplicar posible:
MySQL query using an array
Passing an array to mysqlMySQL PHP - SELECCIONAR DONDE id = array()?

tengo una matriz en PHP:

$array = array(1, 4, 5, 7); 

Como se puede ver, tengo una serie de diferentes valores, pero quiero escribir una declaración MYSQL que verificará si el id es igual a cualquiera de los valores en la matriz. Por ejemplo, si una fila tiene un id de 1, devolverá esa fila, lo mismo para 4, 5 y 7. La longitud de la matriz puede variar debido a la naturaleza del programa, por lo que es donde está el problema. ¿Podría simplemente hacer:

SELECT ... 
    FROM ... 
WHERE id = '$array' 

¿O hay una manera mejor?
Si no estaba claro, solicíteme más información.

+0

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_in – jere

+0

Ver: http://meta.stackexchange.com/questions/2950/should-hi-thanks -taglines-and-salutations-be-removed-from-posts –

Respuesta

91

Use IN.

$sql = 'SELECT * 
      FROM `table` 
     WHERE `id` IN (' . implode(',', array_map('intval', $array)) . ')'; 
+2

Supongo que 'IN' es la declaración preferida. Además, gracias por mostrarme cómo poner mi matriz allí específicamente. :) –

+2

si tengo los mismos ids en el valor de la matriz, entonces obtengo datos de una sola vez, quiero datos de múltiples tiempos, entonces ¿qué debo hacer para eso? –

+0

@DharaPatel ¿Tiene elementos que comparten el mismo 'id'? Puede ser una mala decisión de diseño compartir identificadores (suponiendo que sean primarios). – alex

18

Lo que busca es la declaración IN(). Esto probará si un campo dado contiene uno o más valores.

SELECT * FROM `Table` WHERE `id` IN (1, 2, 3) 

Usted puede utilizar un bucle sencillo para convertir la variable de $array en el formato adecuado. Asegúrese de tener en cuenta la inyección de SQL si los valores de su matriz provienen de la interfaz.

0

Usted puede escribir su consulta como esta:

select * from table where id in (1, 4, 6, 7) 

Puede añadir tantos valores como sea necesario.

0

Puede SELECT WHERE id IN (item1, item2...). Simplemente recorra su matriz de PHP para construir su matriz para la consulta.

9

Basta con utilizar la sintaxis ID IN():

$sql = "SELECT FROM `table` WHERE `ID` IN (".implode(',',$array).")"; 
0

usted querrá utilizar el operador de IN:

$sql = 'SELECT FROM WHERE id IN (' . implode(",", $array) . ')';

puede haber un límite en MySQL de la cantidad de valores que se pueden utilizar en una lista con el operador IN.

Cuestiones relacionadas