Diferencia entre get_record y get_records_sql

Diferencia entre get_record y get_records_sql

de alex morocho -
Número de respuestas: 5

Alguien me podria ayudar con la diferencia entre las funciones get_record y get_records_sql.

Porq hago la siguiente consulta:

$variable=get_records_sql("select reference from mdl_catalogo where id='$cant'"), y creo q esta funcion me arroja los resultados q pueden haber en la tabla, en un array.

Y quisiera saber como recorro ese array y como puedo comparar cada valor de ese array, con otro valor.

Gracias

Promedio de valoraciones: -
En respuesta a alex morocho

Re: Diferencia entre get_record y get_records_sql

de Juan Pueyo -

Hola Alex,

la diferencia entre get_records y get_records_sql es que la segunda función se utiliza como tú has hecho, pasándole una query. get_records es una función más simple aunque a veces más cómoda donde a través de los parámetros puedes indicar lo que quieres que te devuelva. Yo siempre utilizo la segunda porque mandando un query lo veo más claro.

De todas maneras, get_records_sql da problemas cuando las querys incluyen una JOIN, así que te recomiendo que siempre utilices get_recordset_sql.

Te pongo un ejemplo, donde también utilizo la función get_records para saber si la tabla tiene registros en función del valor de un campo:

 if (get_records('tabla','campo',$valorcampo)){
        $sql = "SELECT {$CFG->prefix}tabla.nombre,
                       {$CFG->prefix}tabla.descripcion,
                FROM {$CFG->prefix}tabla
                WHERE {$CFG->prefix}tabla.id = ".$cant;
        if ($registros = get_recordset_sql($sql)){
            while($registro = rs_fetch_next_record($registros)){
                echo $registro->nombre;
                echo $registro->descripcion;
            }
        }
   }

Espero que te sirva.

Saludos.

En respuesta a Juan Pueyo

Re: Diferencia entre get_record y get_records_sql

de alex morocho -

Muchas gracias por su respuesta.

Me podria indicar otro ejemplo, porq lo q quiero hacer es:

Con el array q me da como resultado el query, a cada valor q tiene ese array, quiero compararlo con una variable q ya tengo anteriormente almacenada en una tabla.

$embebido='lo que sea';

$var=get_records_sql("select reference from mdl_catalogo where id='$valor'");

$var->reference;

foreach ($var as $variable)

{

//aqui es donde quisiera saber como comparar el valor de array correspondiente con la variable $embebido. en el caso de q exista (osea se repita) no hacer nada, y si no existe q lo mande a guardar en la tabla mdl_catalogo

}

Por ahi lei q para recorrer un array, lo tendria q hacer con el foreach.

Gracias

En respuesta a alex morocho

Re: Diferencia entre get_record y get_records_sql

de Juan Pueyo -
Hola Alex,

es como te he indicado en el ejemplo, lo que pasa es que si utilizas get_recordset_sql(), que es como te recomiendo que lo hagas, no puedes utilizar foreach, tienes que utilizar un while con rs_fetch_next_record().


$embebido='lo que sea';

if ($var = get_recordset_sql("select reference from mdl_catalogo where id='$valor'")){

while($variable = rs_fetch_next_record($var)){

if ($variable->reference == $embebido)

echo 'Son iguales';

}

}


Pruébalo y me cuentas. Un saludo.


En respuesta a Juan Pueyo

Re: Diferencia entre get_record y get_records_sql

de Gabriel Dias -
Si a vos lo que te interesa es saber si existe un registro para insertarlo o no tambien podes usar las funciones

record_exists o record_exists_select o record_exists_sql

que te devulaven V o F si existe el registro con la condición que le pases

if(record_exists_sql($query)){
insert....
}


Quizá te sirva, saludos


En respuesta a Juan Pueyo

Re: Diferencia entre get_record y get_records_sql

de Ivan Muñoz Mozo -

get_records($table, $field=, $value=, $sort=, $fields='*', $limitfrom=, $limitnum=)
/// Obtiene un numero de registros de la base de datos como una matriz de objetos a partir de una determinada cláusula WHERE.

En esta consulta utilizo get_records_sql para obtener los alumnos inscritos en un curso:

$query = "SELECT u.firstname fname, u.lastname lname, u.id id, u.username uname
FROM ".$CFG->prefix."user u, ".$CFG->prefix."role r, ".$CFG->prefix."role_assignments ra, ".$CFG->prefix."context c
WHERE r.shortname like 'student' and r.id = ra.roleid and ra.userid = u.id and c.contextlevel = 50 and c.id = ra.contextid and c.instanceid = ".(int)($course);

$records = get_records_sql($query);

if (is_array($records))
{
foreach ($records as $record)
{
$s = new Student($record->uname, $record->fname, $record->lname);
}
}

get_record($table, $field1, $value1, $field2=, $value2=, $field3=, $value3=, $fields='*')
/// Obtiene un único registro de la base de datos como un objeto que reúne todas las condiciones dadas.

He visto que este se utiliza mas cuando se quiere modificar un registro de la BD.
Primero se saca.
Se modifica los campos con los valores que se desee.
Por ultimo se inserta

Este codigo es de mi propio modulo
$dbupdate = get_record('trainingadmin_weeklysheets', 'id', $id);

$teacherid = get_record_sql("SELECT id FROM ".$CFG->prefix."user WHERE username LIKE '".$this->teacher->get_username()."'");

$dbupdate->teacher = $teacherid->id;
$dbupdate->season = $this->season;
$dbupdate->warmup = $this->warmup;
$dbupdate->mesoserie = $this->mesoserie;
$dbupdate->microserie = $this->microserie;
$dbupdate->tdatebegin = $this->tdatebegin;
$dbupdate->tdateend = $this->tdateend;

update_record('trainingadmin_weeklysheets',$dbupdate);
Un cordial saludo.