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

PHP OO Retornar valores consulta MySql

Estas en el tema de Retornar valores consulta MySql en el foro de Frameworks y PHP orientado a objetos en Foros del Web. tengo el siguiente código donde realizo un SELECT a la base de datos y este funciona ok 1.php Código PHP: <?php class  CnxBD {      ...
  #1 (permalink)  
Antiguo 11/04/2011, 12:25
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Retornar valores consulta MySql

tengo el siguiente código donde realizo un SELECT a la base de datos y este funciona ok


1.php
Código PHP:
<?php

class CnxBD{
    
    function 
__construct(){
        
//aqui constructores    
    
}
    
    private function 
consultar($sql){
        
$basededatos = new PDO('mysql:host=localhost;dbname=prog_db''usuario''contrasena');
        
$consulta $basededatos->prepare($sql);
        
$consulta->execute();
        
$resultado $consulta->fetch(PDO::FETCH_ASSOC);    
    }    
}

?>
Y en otra pagina tengo el codigo donde incluyo esa clase y la llamo asi:

2.php
Código PHP:
<?php
require_once('1.php');
$datos = new CnxBD;
$datos->consultar("SELECT * FROM tabla");
?>
Alguien por favor me puede explicar o dar un ejemplo de como retornar los resultados de la consulta para imprimirlos en 2.php

Intente con return $resultado, pero no se como recogerlo y como empezar a imprimir los resultados.

Muchas gracias a quien me pueda ayudar.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Última edición por jotaincubus; 11/04/2011 a las 12:43 Razón: mal codigo.
  #2 (permalink)  
Antiguo 11/04/2011, 13:04
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Retornar valores consulta MySql

return $resulado; ¿no te parece?
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 11/04/2011, 13:13
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Retornar valores consulta MySql

Si, pero si leemos bien

Cita:
Intente con return $resultado, pero no se como recogerlo y como empezar a imprimir los resultados.
Serias tan amable por favor de mostrarme como recoges $resultado en 2.php y como imprimes todos los resultados que guarda esa variable ?

Muchas gracias por responder.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #4 (permalink)  
Antiguo 11/04/2011, 13:30
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Retornar valores consulta MySql

consulta el manual de PHP PDO para que veas como devuelve el resultado la función fetch y en función de ello extraes los datos (si es por arrays, objetos u otro varía), pero si en tu función consultar no retornas el resultado (return $resulado;), obviamente no obtendrás acceso a ellos en 2.php.

una manera simple de ver que es lo que te está devolviendo es usar var_dump();
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 11/04/2011, 13:33
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Retornar valores consulta MySql

Que tal jotaincubus,

No encuentro mucho sentido en lo que estas haciendo, una nueva conexión por cada query ?, pero en fin, la respuesta a tu pregunta es que deberías devolver o bien el statement o el resultset.

para retornar el resultset seria así:

Código PHP:
Ver original
  1. ...
  2. return $consulta->fetchAll(PDO::FETCH_ASSOC);
  3. ...

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 11/04/2011, 13:40
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Retornar valores consulta MySql

Te agradezco mucho, pero todo lo que he leído en internet de poco me ha servido, por favor si eres tan amable de mostrarme un ejemplo que la verdad con lo que me haz dado de respuesta no me ha sacado de mi duda.

Muchas gracias, te pongo algo que intente y no me funciono.

Cita:
<?php
require_once('1.php');
$datos = new CnxBD;
$datos->consultar("SELECT * FROM tbl_acceso");

while ($ress = $datos->consultar($resultado)){
echo $ress['id_acceso'];
}
?>
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #7 (permalink)  
Antiguo 11/04/2011, 13:53
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Retornar valores consulta MySql

require_once('1.php');
$datos = new CnxBD;
$datos->consultar("SELECT * FROM tbl_acceso");

while ($ress = $datos->consultar($resultado)){
echo $ress['id_acceso'];
}

haces 2 llamadas a consultar ¿y de donde obtienes $resultado?????, ya se te indico antes que si no devuelves con return ¿como puedes obtener el objeto?
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #8 (permalink)  
Antiguo 11/04/2011, 14:05
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Retornar valores consulta MySql

A ver, dos formas de hacerlo:

devolviendo el statement

Código PHP:
Ver original
  1. class CnxBD
  2. {
  3.     ...
  4.    /**
  5.     * @param string $sql
  6.     * @return PDOStatement
  7.     */
  8.     public function consultar($sql)
  9.     {
  10.         $basededatos = new PDO('mysql:host=localhost;dbname=prog_db', 'usuario', 'password');
  11.         $consulta = $basededatos->prepare($sql);
  12.         $consulta->execute();
  13.         return $consulta;        
  14.     }
  15. }
  16.  
  17. $datos = new CnxBD;
  18. $stmt  = $datos->consultar("SELECT * FROM tbl_acceso");
  19.  
  20. while ($record = $stmt->fetch(PDO::FETCH_ASSOC)) {
  21.     print_r($record);
  22. }

ahora retornando el resultset
Código PHP:
Ver original
  1. class CnxBD
  2. {
  3.     ...
  4.    /**
  5.     * @param string $sql
  6.     * @return array
  7.     */
  8.     public function consultar($sql)
  9.     {
  10.         $basededatos = new PDO('mysql:host=localhost;dbname=prog_db', 'usuario', 'password');
  11.         $consulta = $basededatos->prepare($sql);
  12.         $consulta->execute();
  13.         return $consulta->fetchAll(PDO::FETCH_ASSOC);
  14.     }
  15. }
  16.  
  17. $datos   = new CnxBD;
  18. $records = $datos->consultar("SELECT * FROM tbl_acceso");
  19. foreach($records as $record) {
  20.     print_r($record);
  21. }

Pero te repito, que no entiendo muy bien que es lo que quieres hacer, pero tal cual esta, no es un buen planteamiento.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #9 (permalink)  
Antiguo 11/04/2011, 14:21
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Retornar valores consulta MySql

Masterpuppet sois un bien, ya entendí, mira yo solo necesitaba saber como imprimir los datos, en realidad no haré una conexión por query, lo que necesito es tener el conocimiento de como tomar esos datos para ya después plantear mi código.

Te cuento que lo que intento hacer es tener 3 usuarios en mi DB uno para consultas otros para inserciones y otro para actualizaciones de tablas.

Entonces lo que quiero es eso crear 3 tipos de conexiones en una clase y que dependiendo de lo que necesite realizar la transacción con el usuario que tiene permisos para hacer dicha transacción.

Que te parece este planteamiento ?
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #10 (permalink)  
Antiguo 11/04/2011, 20:04
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Retornar valores consulta MySql

creo que debes de rebisar bien el diseño que quieres hacer, la clase que tienes para hacer la conexion con la base de datos su funcion es esa hacer todas las acciones correspondiente a la interaccion con la base de datos (consulta,insert,update, etc), la clase que tienes para gestionar los usuarios es la que va a gestionar los permisos del usuario y todo lo correspondiente al usuario(login,logout,registro,etc), entonces ambas clases son clases diferentes que interactuan, a donde quiero llegar cuando necesites hacer una interaccion que con la base de datos debes de llamar a esta, para gestionar si el usuario tiene permiso para hacerlo eso le toca a la clase usuario verificarlo, de todas maneras veamos si te indican un diseño mejor del que yo te indique ya que mi experiencia no es tanta, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #11 (permalink)  
Antiguo 12/04/2011, 07:11
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Retornar valores consulta MySql

No no no, la parte de usuarios de mi web no tiene nada que ver con la parte de conexiones a la base de datos.

Lo que yo planteo son usuarios en MySql, osea, crear tres usuarios que no tengan privilegios de root.

UsuarioConsultas, UsuarioInsersiones y UsuarioModificaciones, asi cuando necesite hacer un select utilizo el UsuarioConsultas...

Así creo que le daría un poco mas de seguridad a mi base de datos, ya que dichas conexiones solo tendrán usuarios que tienen privilegios para lo que fueron creados.

Por ejemplo el UsuarioConsultas en mi base de datos no tiene permisos para hacer UPDATES o INSERTS, solo consultas.

Les parece que esto esta bien o es una perdida de tiempo ?
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #12 (permalink)  
Antiguo 12/04/2011, 07:31
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años
Puntos: 60
Respuesta: Retornar valores consulta MySql

Cita:
Les parece que esto esta bien o es una perdida de tiempo ?
No es una perdida de tiempo, es una buena practica, así no estarás expuesto tan expuesto a inyecciones maliciosas y demás.
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #13 (permalink)  
Antiguo 12/04/2011, 08:06
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Retornar valores consulta MySql

x) muchas gracias por tu opinión, ahora creo que empezare a desarrollar el código para utilizar este método ya que en internet no encuentro nada parecido.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #14 (permalink)  
Antiguo 12/04/2011, 08:06
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Retornar valores consulta MySql

Mmmmm, lo normal, es que el usuario de la bbdd sea un usuario con los privilegios restringidos, pero 3 usuarios ?, que tipo de datos vas a manejar ?, cuentas de bancos ?, números de tarjeta de credito ?, entenderia que tuvieras varios usuarios con diferentes permisos y dependiendo del rol del cliente(el usuario que se logea en el front), cargues uno u otro usuario de bbdd, e incluso en este caso, depende de la data que manejes, pero hacerlo por el tipo de query ?, si los datos son triviales es matar moscas a cañonazos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #15 (permalink)  
Antiguo 12/04/2011, 08:51
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Retornar valores consulta MySql

Exacto, que comes que adivinas ? el programa que estoy desarrollando tiene un modulo para facturación, contabilidad, y toda la parte de finanzas de la empresa.

Así que por eso quiero trabajar con esos usuarios, pero si tienes alguna idea mejor por favor compartela que estoy abierto a todo tipo de opiniones e ideas.

(:
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Etiquetas: mysql
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:19.