Foros del Web » Programando para Internet » PHP »

defecto del mysql_fetch_array()???

Estas en el tema de defecto del mysql_fetch_array()??? en el foro de PHP en Foros del Web. hola nuevamente, hace poco expuse el tema "defecto en el metodo POST", ahora tengo un problema similar pero es con la funcion mysql_fetch_array(); veran al ...
  #1 (permalink)  
Antiguo 21/05/2008, 16:33
Avatar de gabrielflowers  
Fecha de Ingreso: julio-2007
Ubicación: Santa Cruz de la Sierra
Mensajes: 187
Antigüedad: 16 años, 9 meses
Puntos: 3
defecto del mysql_fetch_array()???

hola nuevamente, hace poco expuse el tema "defecto en el metodo POST", ahora tengo un problema similar pero es con la funcion mysql_fetch_array();

veran al hacer una consulta a una bd mysql, donde si es que mi sql de consulta contiene campos con "." como parte de su nombre por ejm: "a.cod", entonces al obtener los datos de resultado, el nombre dichos campos son alterados, por ejm ese mismo campo quedaria con el nombre "cod" (es decir se suprimen los caracteres antes del "." y el punto incluido), vean este script e ejemplo

Código PHP:

$sql
="SELECT a.cod,documento_ref_cod,fecha,moneda_cod,m.nombre,tipo_cambio,glosa,a.estado FROM asiento as a,moneda as m WHERE a.moneda_cod=m.cod";
if(
$enlace=mysql_connect('localhost''root''admin123'))
{
 if(
mysql_select_db('adm_sistema',$enlace))
 {
  if(
$rs=mysql_query($sql))
  {
   
$i=0;
   while (
$fila=mysql_fetch_arrray($rs,MYSQL_ASSOC)) 
   {
          
$mdatos[$i]=$fila;
    
$i++;
   }
  }
 }
}
mysql_free_result($rs);
mysql_close($enlace);
echo 
'<br><pre>';
print_r($mdatos[0]);
echo 
'</pre>'
claro no podran ejecutarlo en sus maquinas pues no tienen dicha bd, pero el hecho como dije es que al obtener los datos de la bd con la funcion mysql_fetch_arrray($rs,MYSQL_ASSOC)) , me suprime los caracteres antes del "." y el punto incluido, quedando como resultado falsas llaves, que en mi caso hacen que mi algoritmo no funcione correctamente, comprenden???, que solucion proponen???, y osea para mi eso es anormal por que haciendo pruebas conclui que un array puede tener llaves con "." incluido en sus nombres, ejm:

Código PHP:

$vector
['a.name']="john";
 
$vector["b.surname"]="kenedy";
  echo 
'<br><pre>';
 
print_r($vector);
 echo 
'</pre>';
 echo 
'<br>'
me imprime las llaves tal como estan originalmente, cual es problema entonces del mysql_fetch_array()???, por que de su comportamiento anormal???, y mas que nada como solucionar dicha alteracion de llaves????, gracias de antemano
  #2 (permalink)  
Antiguo 21/05/2008, 16:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: defecto del mysql_fetch_array()???

Hola gabrielflowers,

El problema no es la función, si no tu código, ya que MySQL reserva el uso de la sintaxis:
Código:
SELECT tabla.campo FROM tabla
Si tu tabla tiene campos con puntos, debes de ponerlo con backticks (`):
Código:
SELECT tabla.`a.campo` FROM tabla
Saludos.
  #3 (permalink)  
Antiguo 11/08/2008, 15:21
Avatar de gabrielflowers  
Fecha de Ingreso: julio-2007
Ubicación: Santa Cruz de la Sierra
Mensajes: 187
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: defecto del mysql_fetch_array()???

hola GatorV, tu pones el sgte codigo de ejemplo:

SELECT tabla.`a.campo` FROM tabla

no crees que hay un error ahi?? SELECT tabla.`a.campo` ....
no seria mas bien: SELECT `tabla.campo` ....

, de todas maneras gracias deja probar y te confirmo si esta bien tu observacion sobre las comillas, saludos
  #4 (permalink)  
Antiguo 11/08/2008, 15:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: defecto del mysql_fetch_array()???

Lo que pasa como te dije, al tu usar tabla.campo es un nombre reservado para MySQL, con el que le indicas que seleccione de TABLA el CAMPO, por lo que si tu campo tiene puntos internos pasa eso.

Pruebalo y aca comentas.

Saludos.
  #5 (permalink)  
Antiguo 12/08/2008, 09:40
Avatar de gabrielflowers  
Fecha de Ingreso: julio-2007
Ubicación: Santa Cruz de la Sierra
Mensajes: 187
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: defecto del mysql_fetch_array()???

mira GatorV probe lo que me dijiste en un script en php y no me funciona, tambien lo probe desde el phpmyadmin de xampp y me sale con que la sintaxis del query esta mal, el query que use es el sgte:

Código:
$sql="SELECT `a.cod`,documento_ref_cod,fecha,moneda_cod,m.nombre,tipo_cambio,glosa,a.estado FROM asiento as a,moneda as m WHERE a.moneda_cod=m.cod";
es ahi en `a.cod` que me da error justamente, es decir esas comillas estan demas, estoy viendo otra forma de resolver este problema, estare escuchando sugerencias u opiniones
  #6 (permalink)  
Antiguo 12/08/2008, 10:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: defecto del mysql_fetch_array()???

Mmm muy raro, yo acabo de hacer la prueba con una tabla, le agregue el campo "foo.bar", y el siguiente query no me da ningun error:
Código:
SELECT u.`foo.bar`, u.`id` FROM `users` AS u
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 19:07.