Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] retornar varias filas con mysqli

Estas en el tema de retornar varias filas con mysqli en el foro de PHP en Foros del Web. Cordial saludo. Estoy trabajando con BD mysql y PHP; he decidido trabajar con mysqli que segun lo que he leido es una libreria mucho mas ...
  #1 (permalink)  
Antiguo 20/05/2013, 10:17
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 16 años, 5 meses
Puntos: 2
Pregunta retornar varias filas con mysqli

Cordial saludo.

Estoy trabajando con BD mysql y PHP; he decidido trabajar con mysqli que segun lo que he leido es una libreria mucho mas potente; hago conexiones y todo bien;
en un archivo con funciones aparte del formulario hago las operaciones: insert, update y select, el insert y update funcionan bien porque solo retorno un valor si inserto o no el registro, el inconveniente es cuando hago una consulta a una tabla con mas de un registro y la función return solo retorna un dato y en mi caso son multiples datos; como lo hago???

Agradezco de antemano la ayuda y sugerencias que me puedan brindar.
  #2 (permalink)  
Antiguo 20/05/2013, 10:29
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 10 años, 10 meses
Puntos: 331
Respuesta: retornar varias filas con mysqli

Haz varias llamadas a la misma función dentro de un bucle. Otra opción es utilizar un flag que pondrás en false si una operación falla, sólo al final devuelves ese valor. Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 20/05/2013, 11:01
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 17 años
Puntos: 56
Respuesta: retornar varias filas con mysqli

Holas, tattojk.

Otra opción es que en tu función, retornes un resultado dependiendo del tipo de sentencia, y de la cantidad de registros.

Por ejemplo, yo tenía una función que averiguaba cuál instrucción se estaba ejecutando (un simple substr en la consulta sql), y si era Select o Show, devolvía un array; si era Insert, Update, Delete, Truncate, etc., devolvía un booleano.

En la primera opción (consulta de selección), tú podrías agregar más parametrizaciones opcionales, como por ejemplo, que el usuario defina qué campos quiere que le sean devueltos de la consulta; o, si es uno solo, y el resultado devuelve un solo registro, devolver el valor exacto, no un array (que es lo que tienes ahora, no?), etc.....

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #4 (permalink)  
Antiguo 20/05/2013, 14:51
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: retornar varias filas con mysqli

Cordial saludo.

gracias por sus prontas respuestas; no tengo problemas con el insert y update; solo con los select; estoy intentando retornar los valores de la consulta con un array como lo recomienda quinqui pero ese arreglo solo me almacena la ultima fila de la consulta; ej: tengo dos registros:
Consecutivo Nombre
1 Benjamin
2 Carlos

Cuando retorno el valor del array solo me muestra el ultimo registro.

esta es la sentencia que estoy usando.

Código PHP:
$_SESSION['filas'] = array();
$Sql "SELECT aplConsecutivo, aplNombre FROM aplicaciones";
$Busq $conexion->query($Sql);
while(
$arr $Busq->fetch_array())
    {
        
$fila = array('Consecutivo'=>$arr['aplConsecutivo'], 'Nombre'=>$arr['aplNombre']);
        
array_push($_SESSION['filas'],$fila);
    }

return 
$fila
Este código esta en la función; no se que estoy haciendo mal y cuando muestro en pantalla con print_r($fila) solo me muestra el ultimo registro.


Agradezco de antemano la ayuda y sugerencias que me puedan brindar
  #5 (permalink)  
Antiguo 20/05/2013, 14:58
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 17 años
Puntos: 56
Respuesta: retornar varias filas con mysqli

Ah, es porque con cada iteración del while estás pisando el valor de $fila.
Si quieres retornar un array tipo tabla, debes trabajar $fila como un arreglo mutidimensional:
Código PHP:
 $fila[] = array('Consecutivo'=>$arr['aplConsecutivo'], 'Nombre'=>$arr['aplNombre']); 
En todo caso, si vas a retornar todo el contenido del resultado, no es necesario que especifiques los valores a recuperar: te debiera bastar con asignar en cada iteración el valor del momento, en este caso, almacenado en $arr:
Código PHP:
 $fila[] = $arr
Saludos!

Editado: Por cierto, trabajando así, ya no tendrás que llenar tu $_SESSION dentro del bucle, sino fuera del mismo, justo antes de retornarlo.
Código PHP:
 while($arr $Busq->fetch_array())
 {
   
$fila[] = $arr;
 }
 
$_SESSION['filas'] = $fila;
 return 
$fila
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #6 (permalink)  
Antiguo 20/05/2013, 15:29
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 16 años, 5 meses
Puntos: 2
Pregunta Respuesta: retornar varias filas con mysqli

Cordial saludo quinqui

Efectivamente funciona de la forma que me recomiendas, pero como hago para sacar los valores del array de $fila???

he intentado con $fila['aplConsecutivo'] pero no me muestra nada....

Agradezco de antemano la ayuda y sugerencias que me puedan brindar.
  #7 (permalink)  
Antiguo 21/05/2013, 10:06
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 13 años, 3 meses
Puntos: 47
Respuesta: retornar varias filas con mysqli

Cita:
Iniciado por tattojk Ver Mensaje
Cordial saludo quinqui

Efectivamente funciona de la forma que me recomiendas, pero como hago para sacar los valores del array de $fila???

he intentado con $fila['aplConsecutivo'] pero no me muestra nada....

Agradezco de antemano la ayuda y sugerencias que me puedan brindar.
Mira haz un print_r de $fila para que veas la estructura del arreglo y tengas una idea clara para acceder a las posiciones del mismo
  #8 (permalink)  
Antiguo 21/05/2013, 14:17
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 16 años, 5 meses
Puntos: 2
Pregunta Respuesta: retornar varias filas con mysqli

Cordial saludo.

Ya habia hecho un print_r pero no me habia dado cuenta que retorna es una matriz bidimensional; yo hacia lo siguiente:

Código PHP:
$fila['aplConsecutivo'por consiguiente no funcionabadebe ser asi:

$fila[0]['aplconsecutivo'y asi si funciona
Agradezco la ayuda de todos los que dieron su aporte.
  #9 (permalink)  
Antiguo 21/05/2013, 14:23
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 13 años, 3 meses
Puntos: 47
Respuesta: retornar varias filas con mysqli

ok, marca como solucionado el tema por favor.

Etiquetas: filas, formulario, mysql, mysqli, registro, retornar, select, tabla
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 10:29.