Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

traer array asociativo completo desde mysql

Estas en el tema de traer array asociativo completo desde mysql en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas.. Con esta funcion obtengo de a un registo por vez, como hago para que me devuelva todo el array de registros resultante: function obtendatos() ...
  #1 (permalink)  
Antiguo 17/07/2008, 13:40
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años
Puntos: 2
traer array asociativo completo desde mysql

Buenas..

Con esta funcion obtengo de a un registo por vez, como hago para que me devuelva todo el array de registros resultante:

function obtendatos() {
//aquí se obtienen los datos de la consulta
$this->resultado=mysql_fetch_assoc($this->consulta);
return $this->resultado;
}

Estaba en dudas si ponerlo aca o en base de datos...

saludos y gracias desde ya
  #2 (permalink)  
Antiguo 17/07/2008, 13:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: traer array asociativo completo desde mysql

Hola moron, lo que haces es ciclar:
Código PHP:
function obtentodoslosdatos() {
//aquí se obtienen los datos de la consulta
$resultado = array();
while( 
$row mysql_fetch_assoc($this->consulta) ) {
     
$resultado[] = $row;
}

return 
$resultado;

Saludos.
  #3 (permalink)  
Antiguo 18/07/2008, 19:05
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años
Puntos: 2
Respuesta: traer array asociativo completo desde mysql

Hola GatorV, pensé que habría alguna función de la libreria de mysql para traer el array completo.

Muchas gracias por la respuesta, voy a implementarlo como me dijiste.

saludos
  #4 (permalink)  
Antiguo 22/07/2008, 10:36
Avatar de Quest  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago
Mensajes: 129
Antigüedad: 21 años, 5 meses
Puntos: 2
Respuesta: traer array asociativo completo desde mysql

a ver si me colo.

Y como podria hacerlo para traerlo con indices por separado en caso de un inner join, me explico.

por ejemplo:

SELECT
User.name, User.mail, User.last_connect, Group.name, Group.created
FROM
users as User
LEFT JOIN groups as Group ON (User.group_id = Group.id)
WHERE
User.id = 1

Si ejecuto esa consulta y obtengo los datos con mysql_fetch_assoc solo me devolvera 1 indice 'name' el cual probablemente sea User.name.
Entonces como hago para traer todo y que no se me trai solo uno en este caso.

Tengo una idea que estoy desarrollando, pero si alguien lo ha hecho que nos ayude un poco.

Saludos
__________________
http://victorsanmartin.com
Web Developer
http://www.guiasitios.cl
  #5 (permalink)  
Antiguo 22/07/2008, 10:49
Avatar de SUSMO  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 188
Antigüedad: 16 años
Puntos: 0
Respuesta: traer array asociativo completo desde mysql

Hola Quest

Lo que podrías hacer es darle un alias a los campos name así el índice en lugar de ser name será el alias que le has dado y podrás acceder al valor por éste:

SELECT User.name as userName, User.mail, User.last_connect, Group.name as groupName, Group.created
FROM users as User
LEFT JOIN groups as Group ON (User.group_id = Group.id)
WHERE User.id = 1


Saludos,
__________________
Perdida en el mundo del conocimiento
  #6 (permalink)  
Antiguo 22/07/2008, 12:57
Avatar de Quest  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago
Mensajes: 129
Antigüedad: 21 años, 5 meses
Puntos: 2
Respuesta: traer array asociativo completo desde mysql

mmmm buena solución, pero no veo por donde lograr acomodarla al sistema que estoy realizando.

Lo que pasa es que la idea es que consulte y me devuelva el arreglo asociativo, y obciamnte todo esto automagicamente, o sea un $user->findById('1'); y listo datos traidos sin problema del "name" en este caso. Quizas con una clave asociativa con el nombre del Modelo, como lo hace cake o en objectos, seguiré indagando, por ahora estoy viendo como mapear bien la base de datos en un xml.

Saludos y gracias.
__________________
http://victorsanmartin.com
Web Developer
http://www.guiasitios.cl
  #7 (permalink)  
Antiguo 04/08/2008, 11:04
Avatar de Quest  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago
Mensajes: 129
Antigüedad: 21 años, 5 meses
Puntos: 2
Respuesta: traer array asociativo completo desde mysql

Sorry por levantar un post antiguo, pero me funko la idea, y la quiero compartir.

En mi proyecto ocupo PDO asi que el ejemplo sera con este.

Código PHP:
<?php
    $query 
"SELECT User.name, User.mail, User.last_connect, Group.name, Group.created
                        FROM users as User
                        LEFT JOIN groups as Group ON (User.group_id = Group.id)
                        WHERE User.id = 1"
;
        
    
$dbQuery $this->db->prepare($query);
    
$dbQuery->execute();
        
    
$columns $dbQuery->columnCount();
    
$map = array();
    for (
$i 0$i $columns$i++) {
        
$columnData $dbQuery->getColumnMeta($i);
        
$map[$i]['field'] = $columnData['name'];
        
$map[$i]['table'] = $columnData['table'];
    }

    
$out[] = array();
    while(
$row $dbQuery->fetch(PDO::FETCH_NUM))
    {
        foreach(
$row as $key => $data)
        {
            
$className $map[$key]['table'];
            
$fieldName $map[$key]['field'];
            
            
$out[][$className][$fieldName] = $data;
        }
    }
    return 
$out;
?>
Bueno ahi una porcion del codigo que realiza la magia, obvie el hecho de poner que $this->db es el objecto PDO.

Devuelve un array asociativo al estilo Cake, de hecho hace lo mismo cake, pero no ocupa PDO, y no tenia idea que PDO tenia los metodos para lograrlo.

Si no ocupan PDO pueden revisar para MySQL http://cl2.php.net/manual/es/functio...etch-field.php

Saludos y espero les sirva.
__________________
http://victorsanmartin.com
Web Developer
http://www.guiasitios.cl
  #8 (permalink)  
Antiguo 04/08/2008, 11:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: traer array asociativo completo desde mysql

Gracias por tu aporte, igual lo podrias poner un poco mas completo haciendo una clase hija de PDOStatement y como indicarle a PDO que te regrese un objeto que sea tu clase y con ella ya tengas el método nativo.

Saludos.
  #9 (permalink)  
Antiguo 05/08/2008, 09:07
Avatar de Quest  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago
Mensajes: 129
Antigüedad: 21 años, 5 meses
Puntos: 2
Respuesta: traer array asociativo completo desde mysql

tengo algo por el estilo, solo que ocupo otra capa para eso y no hago una clase hija de PDOStatement, basicamente porque no ocupo directamente PDO, tengo una clase que herda de PDO la cual es llamada por otra clase singleton la que mantiene todas las posibles instancias.

Un poco enredado, de todas formas me gusta tu idea, vere si la puedo implementar ene ste proyecto.

Saludos y espero les haya servido la idea.
__________________
http://victorsanmartin.com
Web Developer
http://www.guiasitios.cl
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 23:16.