Foros del Web » Programando para Internet » PHP »

¿se puede llamar a las base de datos con la funcion mysql_fetch_array cualquier dato

Estas en el tema de ¿se puede llamar a las base de datos con la funcion mysql_fetch_array cualquier dato en el foro de PHP en Foros del Web. $as=mysql_query("select id, nombre from usuario "); $a2=mysql_fetch_array($as); echo $a2[0]; //esto imprime 1 echo $a2[1]; //esto imprime jorge ahora quiero imprimir tambien así el numero 32 ...
  #1 (permalink)  
Antiguo 18/11/2012, 11:39
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 8
¿se puede llamar a las base de datos con la funcion mysql_fetch_array cualquier dato

$as=mysql_query("select id, nombre from usuario ");
$a2=mysql_fetch_array($as);
echo $a2[0]; //esto imprime 1
echo $a2[1]; //esto imprime jorge

ahora quiero imprimir tambien así el numero 32 del id y nombre
pero me da error.
esto lo he puesto de varias forma como por
ejemplo 1:
echo $a2[32]; //pero me da error
echo $a2[32]; //pero me da error
ejemplo 2:
echo 32[0]; //pero me da error
echo 32[1]; //pero me da error
ejemplo 3;
$a=32;
echo $a2[0]; //pero me da error
echo $a2[1]; //pero me da error
yo se $a[0] es un array pero no he podido imprimir los otros valores
solo imprimo así el primero. Con los otros me da un error
y he echo más pruebas y no me sale, segun yo creo que no se puede
pero me gustaría saber que piensan ustedes.

¿se puede llamar a las base de datos con la funcion mysql_fetch_array y sacar el dato que uno guste, sin tener que usar una sentencia sql en esta función ?
  #2 (permalink)  
Antiguo 18/11/2012, 12:09
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: ¿se puede llamar a las base de datos con la funcion mysql_fetch_array cua

"...se puede llamar a las base de datos con la funcion mysql_fetch_array..."

mysql_fetch_array no llama a la base de datos, lo que hace es convertir los datos retornados por una consulta (query) a tipo array que por defecto es indexado y asociado por clave-valor en base a los campos consultados

Código:
$resultado= mysql_query("SELECT id, nombre FROM usuario "); 
while(($resultado= mysql_fetch_array($datos, MYSQL_BOTH))) {
    ....
}
En este ejemplo $dato es un array indexado y asociativo (echa un vistazo a algun manual de php mysql para ver mas opciones), y que solo tiene 2 elementos: $dato[0] que es igual a $dato['id'], y $dato[1] que es igual a $dato['nombre']

No puedes acceder al dato $dato[32] simplemente porque no existe. Si quieres consultar el nombre del registro bajo el id=32 tienes que consultar con ese filtro, o si quieres sacarlo todo tienes que recorrer todos los datos con el while sobre fetch_array y usar un condicional para el id que quieras

Código:
//forma bruta
$resultado= mysl_query("SELECT id,name FROM usuarios");
while(($dato = mysql_fetch_array($resultado, MYSQL_BOTH))) {
    if($dato['id'] == 32) {
        echo $dato['nombre'];
    }
}

//forma neta
$resultado= mysl_query("SELECT name FROM usuarios WHERE id=32");
$dato = mysql_fetch_array($resultado, MYSQL_BOTH);
echo $dato['nombre'];
Ten en cuenta que he omitido todas las comprovaciones de error, per es necesario ponerlas.

Por las demas pruebas que has hecho:

$a2[32] te arroja un error de indice inexistente ya que fetch_array genera un array de 2 elementos (id y nombre)

32[0] te arroja un error de sintaxi, 32 es un tipo entero y no tiene indices

$a=32; $a[0]; desde que asignas 32 a la variable $a esta se convierte en tipo entero, no en tipo array por lo que no puedes acceder a ningun indice

Saludos
vosk
  #3 (permalink)  
Antiguo 18/11/2012, 12:50
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 8
Respuesta: ¿se puede llamar a las base de datos con la funcion mysql_fetch_array cua

Cita:
Iniciado por vosk Ver Mensaje
"...se puede llamar a las base de datos con la funcion mysql_fetch_array..."

mysql_fetch_array no llama a la base de datos, lo que hace es convertir los datos retornados por una consulta (query) a tipo array que por defecto es indexado y asociado por clave-valor en base a los campos consultados

Código:
$resultado= mysql_query("SELECT id, nombre FROM usuario "); 
while(($resultado= mysql_fetch_array($datos, MYSQL_BOTH))) {
    ....
}
En este ejemplo $dato es un array indexado y asociativo (echa un vistazo a algun manual de php mysql para ver mas opciones), y que solo tiene 2 elementos: $dato[0] que es igual a $dato['id'], y $dato[1] que es igual a $dato['nombre']

No puedes acceder al dato $dato[32] simplemente porque no existe. Si quieres consultar el nombre del registro bajo el id=32 tienes que consultar con ese filtro, o si quieres sacarlo todo tienes que recorrer todos los datos con el while sobre fetch_array y usar un condicional para el id que quieras

Código:
//forma bruta
$resultado= mysl_query("SELECT id,name FROM usuarios");
while(($dato = mysql_fetch_array($resultado, MYSQL_BOTH))) {
    if($dato['id'] == 32) {
        echo $dato['nombre'];
    }
}

//forma neta
$resultado= mysl_query("SELECT name FROM usuarios WHERE id=32");
$dato = mysql_fetch_array($resultado, MYSQL_BOTH);
echo $dato['nombre'];
Ten en cuenta que he omitido todas las comprovaciones de error, per es necesario ponerlas.

Por las demas pruebas que has hecho:

$a2[32] te arroja un error de indice inexistente ya que fetch_array genera un array de 2 elementos (id y nombre)

32[0] te arroja un error de sintaxi, 32 es un tipo entero y no tiene indices

$a=32; $a[0]; desde que asignas 32 a la variable $a esta se convierte en tipo entero, no en tipo array por lo que no puedes acceder a ningun indice

Saludos
vosk
pero entonces como puedo saber el ultimo dato de cada búsqueda
como por ejemplo
$as=mysql_query("select * from usuario where nombre like '$nombre' limit 7 offset 0");
for($a2=0; $a2=mysql_fetch_array($as); $a2++)
{
echo $a2[0]."-";
echo $a2[1]."<br />";
}


como puedo saber el ultimo dato de cada búsqueda de 7 elementos

es por eso que preguntaba
gracias
  #4 (permalink)  
Antiguo 18/11/2012, 17:22
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: ¿se puede llamar a las base de datos con la funcion mysql_fetch_array cua

Tienes que mover el puntero de lectura del resultado para que se situe en la posicion que quieras: en este caso sería 6, pero creo que sería mas fiable usar el nº de filas-1 para evitar problemas:

Código:
mysql_data_seek($resultado, mysql_num_rows($resultado)-1);
$fila = mysql_fetch_assoc($resultado);
echo $fila['usuario'];
mysql_fetch_assoc y mysql_fetch_row hacen lo mismo que mysql_fetch_array especificando los tipos de array resultante con MYSQL_ASSOC y MYSQL_NUM respectivamente. Las tres funciones retornan en forma de array la fila en la que esté el puntero de lectura y ademas lo adelanta a la siguiente posicion.

Saludos
vosk

Etiquetas: dato, funcion, mysql, sql, usuarios
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 18:44.