Foros del Web » Programando para Internet » PHP »

select con una matriz

Estas en el tema de select con una matriz en el foro de PHP en Foros del Web. hola foro, saben si es posible realizar por ejemplo un select por una variable de tipo matriz que lleve datos. Por ejemplo: $vmatriz[] = "juan,pedro,ana,etc" ...
  #1 (permalink)  
Antiguo 15/05/2012, 07:41
 
Fecha de Ingreso: diciembre-2008
Ubicación: PERU
Mensajes: 294
Antigüedad: 15 años, 11 meses
Puntos: 23
select con una matriz

hola foro, saben si es posible realizar por ejemplo un select por una variable de tipo matriz que lleve datos.

Por ejemplo: $vmatriz[] = "juan,pedro,ana,etc"

y esos valores que sean consultados en un select por ejemplo:

select nombre, apellido from personas where nombre unit ( 'vmatriz[]' )

y que pinte:

juan - lopez
pedro - perez
..... etc ....

  #2 (permalink)  
Antiguo 15/05/2012, 09:20
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 15 años, 2 meses
Puntos: 44
Respuesta: select con una matriz

hacer un select con un array????? o porque mejor no haces un query con un "or" o bien un bucle para cada elemento del array
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #3 (permalink)  
Antiguo 15/05/2012, 10:11
Avatar de webseficientes  
Fecha de Ingreso: enero-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 320
Antigüedad: 19 años, 9 meses
Puntos: 14
De acuerdo Respuesta: select con una matriz

No podes hacerlo de manera directa, como lo estas queriendo hacer.

Lo que podrías hacer es mediante una función armar esa parte de la consulta sql.

por ejemplo

Código PHP:
$where_in implode","$vmatriz); 
y luego

Código PHP:
$sql "SELECT .... WHERE campo in (" $where_in ")"


De esde modo si podria funcionar.

Gerardo Benitez
__________________
Gerardo Benitez
Programador Web Freelance, SEO, Diseño web
  #4 (permalink)  
Antiguo 28/05/2012, 08:43
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 15 años, 2 meses
Puntos: 44
Respuesta: select con una matriz

webseficientes se debe de tomar encuenta los tipos de datos de los campos así como los parametros de búsqueda, al menos para mí se me hace más sencillo meter esa "matriz" en un bucle y armar como tu bien indicas solo la cláusula WHERE
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #5 (permalink)  
Antiguo 28/05/2012, 08:50
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 5 meses
Puntos: 394
Respuesta: select con una matriz

de poderse se puede el problema es la carga que soportara el servidor

Código PHP:
Ver original
  1. $arrayBusqueda = array("juan", "pedro", "ana", "etc");
  2.  
  3. foreach($arrayBusqueda as $valor){
  4. $query = "SELECT nombre, apellido FROM personas WHERE nombre = $valor";
  5. $ejecutar = mysql_query($query);
  6. while($res = mysql_fetch_array($ejecutar)){
  7. $arrayResultado[] = $res['nombre']."-".$res['apellido'];
  8. }
  9. }
  10. print_r($arrayResultado);

NOTA: Lo hice a las carreras y sin verificar, pero esa es la idea.
OJO: Por cada iteracion se realizara UNA CONSULTA A LA BD asi que si tienes un array de 1000 valores se realizaran 1000 consultas a la base de datos... :S
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #6 (permalink)  
Antiguo 28/05/2012, 09:13
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 15 años, 2 meses
Puntos: 44
Respuesta: select con una matriz

eso le decía yo... pero tomando en cuenta lo que mencionas de los 1000 valores... son muchas peticiones al servidor para solo un script :S


$where = 'nombre!="" ';
foreach($arrayBusqueda as $valor){
$where .= ' || nombre = "'.$valor. '" ';
}

$query = "SELECT nombre, apellido FROM personas WHERE $where";
$ejecutar = mysql_query($query);


creo que así queda mejor...

Pd. No he verificado el código así que igual y tiene algunos errores... saludos
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #7 (permalink)  
Antiguo 28/05/2012, 09:45
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 8 meses
Puntos: 336
Respuesta: select con una matriz

Bueno, teniendo en cuenta todo lo que han dicho, se puede hacer una tabla temporal, de esta forma:

Código PHP:
$MQ=mysql_query("CREATE TEMPORARY TABLE tab_temp(
    name varchar(40) NOT NULL
);
INSERT INTO tab_temp VALUES ('"
.implode"'),('"$nombres)  ."');

SELECT * FROM `users`,tab_temp WHERE users.name=tab_temp.name;"

Esto crearía una tabla temporal de un solo campo que guardaría todos los nombres y luego la cruzaría con la tabla real reduciendo la carga :)
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #8 (permalink)  
Antiguo 28/05/2012, 09:55
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 15 años, 2 meses
Puntos: 44
Respuesta: select con una matriz

:O... y en serio si se reduce la carga???? porque tengo la impresión (no lo digo con certeza...) de que sería lo mismo hahahaha pero acabo de aprender otro método para realizarlo

yeah!!
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!

Etiquetas: matriz, select, variables
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 18:29.