Foros del Web » Programando para Internet » PHP »

Comportamiento del mysql_fetch_array()

Estas en el tema de Comportamiento del mysql_fetch_array() en el foro de PHP en Foros del Web. Hola a todos.... Bueno tratando de entender a PHP... me tope con el siguiente detalle: tengo una clase que la uso para crear la conexion ...
  #1 (permalink)  
Antiguo 07/09/2006, 08:08
 
Fecha de Ingreso: septiembre-2006
Mensajes: 21
Antigüedad: 17 años, 7 meses
Puntos: 0
Comportamiento del mysql_fetch_array()

Hola a todos.... Bueno tratando de entender a PHP... me tope con el siguiente detalle: tengo una clase que la uso para crear la conexion a la BBDD y para la busqueda de registros, el tema es que en la funcion de "busqueda" utilizo el mysql_fetch_array():
esta es la clase "clase_mysql.inc.php":
<?php
class conn{
/* variables de conexión */
var $connx;
var $resultado;
var $error;
var $row;

/*Funcion de conexion a la BD*/
function conexion($bd, $host, $user, $pass){
$this->connx=mysql_connect($host, $user, $pass);
mysql_select_db($bd,$this->connx);
}

/*Funcion de busqueda*/
function busqueda($strSQL){
$this->resultado=mysql_query($strSQL, $this->connx);
$this->row=mysql_fetch_array($this->resultado, MYSQL_ASSOC);
if (!$this->row){
$this->error=true;
}else{
$this->error=false;
}
}
}
?>

Parte del codigo que instancia a esta clase es el siguiente:

<?php

require("clase_mysql.inc.php");
$bd=new conn();
$bd->conexion("maestropersonal","localhost","root","") ;
$bd->busqueda("SELECT * FROM bpe_users WHERE usu_id=" . $_POST["txtCarnet"]);

$usuario = $bd->row['perfil'];
echo "USUARIO: " . $usuario;
?>

El problema es el siguiente: tengo entendido que si usas mysql_fetch_array con el parametro MYSQL_ASSOC, puedes hacer referencia a los campos por sus nombres, pero no entiendo que pasa que no me arroja ningun resultado, pero si le quito el parametro y hago referencia a los compos con los indices en vez de sus nombres, me da resultado.

En realidad no es un problema ya que la consulta la realiza y me arroja resultados, es mas curiosidad que cualquier otra cosa, ademas es mas facil hacer referencia por los nombre de los campos que por sus indices, o no...?

Gracias de antemano
  #2 (permalink)  
Antiguo 07/09/2006, 08:23
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
la función mysql_fetch_array() hace exactamente lo mismo que mysql_fetch_row(), con la excepción que podemos referenciar a los campos por su nombre ($row["email"]), en vez de por un número.

esto se refiere a que no necesitas de esto MYSQL_ASSOC
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 07/09/2006, 08:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Con mysql_fetch_array() puedes acceder al resultado por su array asociativo o numérico.

El problema es que te entrega un array que debes recorrer su resultado con un bucle. Si tu sabes que tu resultado es sólo un registro .. no uses mysql_fetch_array() sino mysql_fech_row() o incluso mysql_result() para ir directo al resultado.

Es decir .. tu método debería usar tal vez mysql_fetch_assoc() pero recuerda que eso te entregará un array.

Todo esto lo puedes ver mejor usando:
var_dump()

Aplicado al resultado de un mysql_fetch_array() .. o un mysql_fetch_row() o un assoc .. así ves que array te está generando y veras más claro como deberías accederla.

Por lo demás, una validación de mysql_query() sólo te devuelve si se ejecutó o no .. pero no del n° de resultados que te arroja la consulta como para luego pretender acceder a su resultado (cosa que si no haces . .obtendras un buen mensaje de error de parte de PHP).

Código PHP:
if (mysql_num_rows($this->resultado) > 0){
  
// accedes a tu resultado.
} else {
  
// no hay resultados .. 

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 07/09/2006, 09:31
 
Fecha de Ingreso: septiembre-2006
Mensajes: 21
Antigüedad: 17 años, 7 meses
Puntos: 0
Gracias Cluster, excelente recomendacion....
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 02:22.