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

funcion row()

Estas en el tema de funcion row() en el foro de CodeIgniter en Foros del Web. Hola, tengo una funcion para coger un registro de la base de datos. Código PHP: public function  get_registro ( $tabla , $registro , $campos = null ...
  #1 (permalink)  
Antiguo 15/07/2011, 10:24
 
Fecha de Ingreso: diciembre-2009
Mensajes: 79
Antigüedad: 15 años
Puntos: 1
funcion row()

Hola,

tengo una funcion para coger un registro de la base de datos.

Código PHP:

public function get_registro($tabla,$registro,$campos=null)
    {
        (
is_null($campos))?'':'$query=$this->db->select($campos);';
        
$query $this->db->where($this->imareal->campoClave($tabla),$registro);
        
$query $this->db->get($tabla);
        return 
$query->row();
    } 

Pero quiero saber en el caso de que no haya ningun resultado, y portanto no selecciona ninguno, que me devuelve esta funcion
Porque ya se que si hay me devuelve un unico registro, aunque hubiese mas.

//-------------------------------------------------------------------------------------------------
row()

This function returns a single result row. If your query has more than one row, it returns only the first row. The result is returned as an object. Here's a usage example:

Código PHP:
$query $this->db->query("YOUR QUERY");

if (
$query->num_rows() > 0)
{
   
$row $query->row(); 

   echo 
$row->title;
   echo 
$row->name;
   echo 
$row->body;

Saludos y gracias.

PD.- Si alguien tiene alguna funcion o idea mejor para solo coger un registro, que me diga :)
  #2 (permalink)  
Antiguo 15/07/2011, 10:50
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: funcion row()

Te devuelve NULL si no hay registro imagino.

Y por que no usas solo:

$this->db->select($campos)->where($condicion)->get($tabla,1)->get_result() ?

El get( ,1) te devuelve 1 registro y si no hay te daria un array vacio cosa que podes verificar con var_dump()
__________________
Salu2!
  #3 (permalink)  
Antiguo 15/07/2011, 11:45
 
Fecha de Ingreso: diciembre-2009
Mensajes: 79
Antigüedad: 15 años
Puntos: 1
Respuesta: funcion row()

Hola,

Q va no devuelve null, ya probre a coger el valor de vuelto asi, is_null($valor) y no funcionaba.

No lo cojo con get, porq eso me da un array con los objetos, aunque solo sea uno, me va a dar un array de tamaño uno y para el uso que le voy a dar luego, era mas facil usar row() :)

A ver si alguien mas puede decir algo.

Gracias Italico!
  #4 (permalink)  
Antiguo 15/07/2011, 12:26
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: funcion row()

amigo: no le veo el problema a un array de obejtos

Si te devuelve 1 registros... $variable[0]->propiedad

Solo te falta chequear si el array esta vacio....... usando count($variable) ?
__________________
Salu2!
  #5 (permalink)  
Antiguo 15/07/2011, 13:07
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: funcion row()

La otra es en tu metodo en el model devolver asi:

Return ($query->row())[0];

Ya te tocaria solo ver si te da Null o.... extender la clas DB y hacer un metodo get_one() que si es un solo elemento, no lo devuelva como array!
__________________
Salu2!

Última edición por Italico76; 15/07/2011 a las 13:43
  #6 (permalink)  
Antiguo 15/07/2011, 13:49
 
Fecha de Ingreso: diciembre-2009
Mensajes: 79
Antigüedad: 15 años
Puntos: 1
Respuesta: funcion row()

Hola Italico,

lo he solucionado así:

Código PHP:
public function get_registro($tabla,$registro,$campos=null)
    {
        (
is_null($campos))?'':'$query=$this->db->select($campos);';
        
$query $this->db->where($this->imareal->campoClave($tabla),$registro)->get($tabla);
        if(
$query->num_rows()>0)
        {
            return 
$query->row();    
        } 
        else
        {
            return 
false;
        }
    } 

Etiquetas: frameworks-y-php-orientado-a-objetos, funcion
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:35.