Foros del Web » Programando para Internet » PHP »

_result vs _fetch_row

Estas en el tema de _result vs _fetch_row en el foro de PHP en Foros del Web. Hola gente: Hace algún tiempo que veo que Cluster le ha agarrado cariño a la función mysql_result()... yo aún no termino de entender el funcionamiento ...
  #1 (permalink)  
Antiguo 12/11/2003, 07:44
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
_result vs _fetch_row

Hola gente:
Hace algún tiempo que veo que Cluster le ha agarrado cariño a la función mysql_result()... yo aún no termino de entender el funcionamiento de esta función (aunque ya ví el manual y bastante idea tengo)...
Lo que quiero saber es ¿Por qué utilizar esa función en lugar de mysql_fetch_array (o fetch_row)?
o de otro modo: ¿En qué casos es más óptimo utilizar una o la otra?
Por ejemplo:
Estos dos codes hacen lo mismo (lo saqué del script de Cluster pa subir imágenes en binario):
Código PHP:
$sql "SELECT archivo_binario,archivo_tipo FROM archivos WHERE id='".$_GET['id']."'";
$consulta mysql_query($sql,$conexion);

//Esto es lo que pone Cluster
/*************************/
$datos mysql_result($consulta,0,"archivo_binario");
$tipo mysql_result($consulta,0,"archivo_tipo");
/*************************/



//Yo lo habría puesto así:
/*********************/
$row=mysql_fetch_row($consulta);
$datos=$row[0];
$tipo =$row[1];
/*********************/


//esto es lo que sigue:
header("Content-type: $tipo");
echo 
$datos
Las dos cosas hacen lo mismo.

Saludos
  #2 (permalink)  
Antiguo 12/11/2003, 07:53
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Pues yo en este caso no usaria mysql_result() . Usaria mysql_fetch_array() o mysql_fetch_assoc() y usaria los nombres de campo como indice (auto documentacion del codigo, aunque mas trabajo si cambias los nombres de los campos).

El mysql_result() yo lo usaria cuando la consulta solo devuelve un registro con un campo. Y no usaria el nombre del campo, sino el "offset" (0 para el primer campo). Caso tipico: SELECT COUNT(*) FROM tabla

Para mas registros/campos, PREFIERO mysql_fetch_*(). Pero es mas gusto personal que razones de rendimiento.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 12/11/2003, 09:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. en el ejemplo que pusistes jpinedo .. sólo se va a obtener un sólo registro (ese campo ID es único) .. así que puedes usar mysql_fetch_row() .. o cualquier otro "_fetch_" .. y por supuesto el mysql_result() al registro 0 ..

No lo usé por cosas de "rendimiento" .. sino más bien .. por qué jeje me dío ese dia por usarlo. En principio creo recordar que usé sólo un campo (el binario) y luego le añadí otros .. así que hice "cut-and-paste" de esa línea y le añadí el resto de campos xDD .. Para que se viese de donde salen los nombres de los campos use su indice asociativo (nombre del campo) y no numérico.

Personalmente (no sé como andará de rendimiento) me gusta usar mysql_fecht_* que sea asociativo . ya sea un array y por indice "nombre" del campo .. o assoc .. o incluso object. Para mi me complica menos seguir código tipo $row['campo'] que $row[1] ..


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 12/11/2003, 23:00
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Bueno... yo comparto eso de utilizar el fetch_* que sea asociativo... en cuanto a rendimiento, dice el manual:
Cita:
La función mysql_fetch_array() no es significativemente mas lenta que mysql_fetch_row(), sin embargo tiene un valor añadido importante.
Lo que pasa es que, aunque no sea significativo, algo ahorrará ¿no?... y yo quería poner las cosas de la forma más "ahorradora" posible para que se le haga más difíl ganar a tu _result()..xD...xD..... porque no termino de entenderlo... aunque ahora ya tengo una idea más clara.. gracias al manual y al comentario de ustedes dos...

Muchas gracias

Saludos
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 14:05.