Foros del Web » Programando para Internet » PHP » CodeIgniter »

Error al intentar sacar un valor de un objeto

Estas en el tema de Error al intentar sacar un valor de un objeto en el foro de CodeIgniter en Foros del Web. Hola foreros. Tengo un problema en el siguiente código y es que no sé sacar el valor del objeto Password. Código PHP: $passdb  =  $row ...
  #1 (permalink)  
Antiguo 18/02/2012, 05:22
 
Fecha de Ingreso: mayo-2009
Mensajes: 35
Antigüedad: 15 años
Puntos: 1
Error al intentar sacar un valor de un objeto

Hola foreros.
Tengo un problema en el siguiente código y es que no sé sacar el valor del objeto Password.
Código PHP:
$passdb $row->Password
cuando lo intento sacar me salta el siguiente error
Message: Trying to get property of non-object

Código PHP:
$query $this->db->get_where('usuarios', array('Correoelec' => $correo));
            
            if (
$query-> num_rows() > 0){
                
$query $this->db->query(
                
'SELECT Password FROM usuarios WHERE Correoelec = "$correo"');
                
$row $query->row();
                
$passdb $row->Password
return $passdb;
}

Mi objetivo es sacar el valor de Password, no sé si tengo que hacer algo mas.
Muchas gracias
  #2 (permalink)  
Antiguo 18/02/2012, 06:53
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Error al intentar sacar un valor de un objeto

Si el query no te devuelve resultado te dará error, deberias comprobar antes que el query tiene datos, igual que lo haces con el usuario, luego ya asignas los valores.
  #3 (permalink)  
Antiguo 21/02/2012, 15:20
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Respuesta: Error al intentar sacar un valor de un objeto

Hola, podrias usar un var_dump:
Código PHP:
var_dump($row); 
con esto podras ver que es lo que te esta devolviendo la consulta.
Saludos
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #4 (permalink)  
Antiguo 25/02/2012, 02:08
Avatar de rigobcastro  
Fecha de Ingreso: febrero-2012
Ubicación: Lejanías
Mensajes: 69
Antigüedad: 12 años, 2 meses
Puntos: 21
Respuesta: Error al intentar sacar un valor de un objeto

Por si aún necesitas la ayuda, te dejo lo siguiente

Necesitas un valor y estás repitiendo la consulta sin necesidad. Te dejo 3 métodos para hacer posible el acceso, se podrían trabajar más pero como desconozco la lógica de tu aplicación en total, considero que estos son los correctos.

Método 1: Primero se ejecuta la consulta sin asociar ningún valor, luego se comprueba si existen resultados y se retorna el valor de la forma asociativa.

Código PHP:
/** Método 1  **/
    
 
$query $this->db->where(array('Correoelec' => $correo))
         ->
get('usuarios');
 
 if(
$query->num_rows() > 0){
     return 
$query->row('Password');
 } 
Método 2: Se ejecuta la consulta retornando el valor directamente y luego se comprueba estrictamente si la consulta está vacia o es nula. Recordar que la función empty es muy útil y necesaria, comprueba cadenas vacias, enteros en 0, valores nulos, arrays vacios, objetos vacios, valores falsos (false) y decimales en 0.0. Este método es el recomendado y te ayudará con más velocidad.

Código PHP:
 /** Método 2  **/
 
$query $this->db->where(array('Correoelec' => $correo))
        ->
get('usuarios')
        ->
row('Password');

 if(!empty(
$query)){
     return 
$query;
 } 
Método 3: Mismo método 2 pero trabajado con get_where. Personalmente prefiero el método 2 ya que su sintaxis es más amplia para actualización y depuración.

Código PHP:
 /** Método 2  **/
 
/** Método 3 **/
 
 
$query $this->db->get_where('usuarios', array('Correoelec' => $correo))
         ->
row('Password');
 
  if(!empty(
$query)){
     return 
$query;
  } 

Recuerda leer la guía del Codeigniter, es muy fácil de entender.

Última edición por rigobcastro; 25/02/2012 a las 02:10 Razón: Error en las BBC de las URL

Etiquetas: Ninguno
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 19:08.