Foros del Web » Programando para Internet » PHP »

Funciones sobre MySQL

Estas en el tema de Funciones sobre MySQL en el foro de PHP en Foros del Web. Bueno, como dije en otro tema, me gustaria saber la diferencia de mysql_result() y mysql_fetch_row() y tambien saber como hacer si necesito mas de un ...
  #1 (permalink)  
Antiguo 25/11/2006, 21:11
Avatar de Falhor  
Fecha de Ingreso: diciembre-2005
Ubicación: Buenos Aires
Mensajes: 425
Antigüedad: 18 años, 11 meses
Puntos: 5
Funciones sobre MySQL

Bueno, como dije en otro tema, me gustaria saber la diferencia de mysql_result() y mysql_fetch_row() y tambien saber como hacer si necesito mas de un query.

Saludos.
  #2 (permalink)  
Antiguo 25/11/2006, 21:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
La función mysql_result() accede a un resultado concreto dentro de un "record set" (conjunto de resultado obtenido de una consulta SQL ejecutada).

Si tu sabes que sólo obtienes un registro como resultado .. o bien necesitas acceder a cierto "resultado" directo .. ahí te conviene usar "mysql_result()".

Pero, .. como lo haces si tu resultado arroja más de un "registro"? .. Podrías decirme que aplicas un bucle "for()" con mysql_result() .. (sería una solución) .. pero no la más óptima.

Para eso, .. PHP implementa todo el lote de funciones tipo xxx_fetch_xxx() (y lo pongo con xxx por qué no sólo son para Mysql .. cada BBDD tiene las mismas implementaciones y no sólo existe "row" .. sino otras más como "array", "assoc", "object" ..). Estas funciones crean un "array" (asociativo o no) .. o un objeto del resultado dado para que tu lo puedas manejar.

Con respecto a la pregunta "si necesito más de un query" .. no entendí a que te refires ..

Un "query" es una sentencia SQL a ejecutar .. puedes en un script PHP ejecutar las que quieras y obtener sus resulados con las funciones mencionadas.

Expón algún ejemplo para que veamos como tu lo resuelves y como tal vez te vendría mejor resolverlo o sobre el problema que expones.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 25/11/2006, 21:36
Avatar de Falhor  
Fecha de Ingreso: diciembre-2005
Ubicación: Buenos Aires
Mensajes: 425
Antigüedad: 18 años, 11 meses
Puntos: 5
Si quiero sacar todos los datos de todos los registros por ejemplo yo hacia:

Código PHP:
$maxmysql_num_rows($query);
    for (
$i=0;$i<$max;$i++)
    {
        
$cod mysql_result($rs,$i,0);
        
$ape mysql_result($rs,$i,1);
        
$tel mysql_result($rs,$i,2);
    } 
Lo del query lo pregunte por esto:

Cita:
No puedes hacer 3 mysql_query() y 3 mysql_result() .. por lo mismo de antes ..
Saludos.
  #4 (permalink)  
Antiguo 25/11/2006, 21:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por Falhor Ver Mensaje
Si quiero sacar todos los datos de todos los registros por ejemplo yo hacia:

Código PHP:
$maxmysql_num_rows($query);
    for (
$i=0;$i<$max;$i++)
    {
        
$cod mysql_result($rs,$i,0);
        
$ape mysql_result($rs,$i,1);
        
$tel mysql_result($rs,$i,2);
    } 
Lo del query lo pregunte por esto:



Saludos.
Bueno .. pues el caso que presentas se resuelve de forma más "natural" simplemente:

Código PHP:
$sql="SELECT cod,ape,tel FROM tabla";
$resultado=mysql_query($sql) or die (mysql_error());

if (
mysql_num_rows($resultado) > 0) {
  while (
$row=mysql_fetch_array($resultado)){
     echo 
$row['cod']." -->".$row['ape']." --> ".$row['tel']."<br>";
  }
} else {
   echo 
"No hay resulados";

Accedemos de esa forma al resultado creando un array (por qué usé mysql_fetch_array() .. podría haber sido un objeto con "object" en lugar de "array"). Uso los nombres de los campos involucrados en mi consulta SQL .. así el código es más "legible" que el n° ordinal que corresponde según se nombraron en la sentencia SQL.

En tu caso también puedes usar:
mysql_result($rs,$i,'nombre_campo');

y así haces más "entendible" tu código ...


También puedes acceder por el n° de la "columna" en el array creado, aunque interpretar un código así es mucho más complicado que llamar a los campos que uses por su nombre (y si usas funciones y cosas más complicadas en tu SQL ya crearas "alias").

Y si te complica crear un array o mejor dicho acceder a los resultados en forma de $row['campo'] .. puedes crear variables directamente usando:

en lugar de:
while ($row=mysql_fetch_array($resultado)){

usar
while (list($cod,$apel,$tel)=mysql_fetch_array($resultad o)){

Por otro lado mysql_num_rows() lo usamos con algo más práctico: ver si nuestra consulta SQL tiene o no resultados para controlar esa situación.

Cita:
Lo del query lo pregunte por esto:
Cita:
No puedes hacer 3 mysql_query() y 3 mysql_result() .. por lo mismo de antes ..
Esto lo sacastes un poco fuera de contexto .. deberías aportar el código que usastes y ahí lo volvemos a conversar (recuerda que esto es un "tema nuevo" pese que estemos hablando tu y yo ahora .. cualquiera podría entrar a aportar en este tema).


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 22:40.