Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Where de elementos de un array

Estas en el tema de Where de elementos de un array en el foro de PHP en Foros del Web. Me sabe un poco mal preguntar algo que parece simple, pero no se muy bien cmo buscar esto en google, solo encuentro basura que no ...
  #1 (permalink)  
Antiguo 08/12/2013, 11:09
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años, 6 meses
Puntos: 66
Where de elementos de un array

Me sabe un poco mal preguntar algo que parece simple, pero no se muy bien cmo buscar esto en google, solo encuentro basura que no tiene nada que ver

supongamos que tengo un array con 3 o 4 elementos $elementos

una consulta fea para que os hagais a la idea seria

foreach($elementos as $elemento){
select * from dondesea where grupo=$elemento
}

imagino que habrá alguna forma de pasarle un array directamente a mysql y no tener que usar ese loop e ir incrementando los resultados por mi cuenta
  #2 (permalink)  
Antiguo 08/12/2013, 11:13
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años, 6 meses
Puntos: 66
Respuesta: Where de elementos de un array

vale que no lo encontraba...

algo como esto

SELECT * FROM table WHERE id IN (1,2,3,4);

hasta ahora hacia una forma un poco guarra y apartir del array generaba un string "(1,2,3,4)" y lo concatenaba en la consulta pero ¿esa forma guarra es la buena o hay una mas "elegante"?
  #3 (permalink)  
Antiguo 08/12/2013, 11:16
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 3 meses
Puntos: 83
Respuesta: Where de elementos de un array

Puedes seleccionar la colision para una lista de condicionales:

SELECT * FROM dondesea WHERE grupo=1 OR grupo=4 OR grupo=12;

Código PHP:
Ver original
  1. $ctd = 0;
  2. $query = "SELECT * FROM dondesea WHERE ";
  3. foreach($elementos as $elemento){
  4.     if($ctd++) {
  5.         $query .= " OR ";
  6.         }
  7.     $query .= sprintf("grupo=%d", $elemento);
  8. }

Lo estaba escribiendo mientras tu colgabas lo del IN, creo que esto que te propongo es menos elegante

Saludos
vosk
  #4 (permalink)  
Antiguo 08/12/2013, 11:20
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años, 6 meses
Puntos: 66
Respuesta: Where de elementos de un array

pero ahi estoy haciendo lo del segundo ejemplo no?

generar un string a base de concatenar elementos de un array y cuando lo tengo mandarlo al mysqli_query asi sin mas...

no pongo pegas, solo pregunto si esa es la forma "correcta" de hacer eso
  #5 (permalink)  
Antiguo 08/12/2013, 11:28
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 3 meses
Puntos: 83
Respuesta: Where de elementos de un array

Para ser sincero no tengo ni idea :) En teoria todas las consultas a traves de mysqli::query son en formato texto:

Código PHP:
Ver original
  1. mixed mysqli::query ( string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
  2. mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

Entiendo que solo le puedes enviar texto, luego de alguna forma tienes que 'decirle' que cosas quieres aceptar en la consulta, y si tienes mas de una tienen que salir todas (a menos que sea algun tipo de progresion y puedas decirle que seleccione todo lo de sea menor que n, o lo que sea). Si lo haces con el IN tienes que especificar que elementos deberá tener en cuenta, y si lo haces de cualquier otra forma tambien.

Saludos
vosk
  #6 (permalink)  
Antiguo 08/12/2013, 11:30
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años, 6 meses
Puntos: 66
Respuesta: Where de elementos de un array

bueno me conformare con eso, muchas gracias ;)

Etiquetas: elementos, mysql, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:21.