Foros del Web » Programando para Internet » PHP »

Problema con consulta

Estas en el tema de Problema con consulta en el foro de PHP en Foros del Web. Buenas tengo una función q me hace una consulta sql, pero al ver el resultado me muestra : Resource id&7, claro esta q no es ...
  #1 (permalink)  
Antiguo 29/08/2005, 04:34
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
Problema con consulta

Buenas tengo una función q me hace una consulta sql, pero al ver el resultado me muestra :
Resource id&7, claro esta q no es lo kiero, pongo aki el codigo:

$sql1=" SELECT group_name FROM `email_group`";

if (!$res=send_sql($db,$sql1))
{
echo "No se ha podido realizar la consulta";
exit(0);
}
echo $res;

donde send_sql es:

function send_sql ($db,$sql)
{
if (!$res=mysql_db_query (etraveller,$sql))
{
echo mysql_errno()." ".mysql_error();
exit;
}
return $res;
}

La conexion a la bd esta bien, q le puede fallar?
  #2 (permalink)  
Antiguo 29/08/2005, 04:58
 
Fecha de Ingreso: diciembre-2004
Mensajes: 120
Antigüedad: 13 años
Puntos: 0
Hola.
Te da el resource_id porque no le has concretado que campo quieres mostrar. Fijate en que casi al final he añadido un par de lineas. Con algo así te debería funcionar, suponiendo que el campo que quieras ver sea group_name.

$sql1=" SELECT group_name FROM `email_group`";

if (!$res=send_sql($db,$sql1))
{
echo "No se ha podido realizar la consulta";
exit(0);
}
echo $res;

donde send_sql es:

function send_sql ($db,$sql)
{
if (!$res=mysql_db_query (etraveller,$sql))
{
echo mysql_errno()." ".mysql_error();
exit;
}
$res = mysql_fetch_array ($res);
$res = $res[group_name];
return $res;
}

Última edición por Flopi; 29/08/2005 a las 06:05 Razón: Había un fallo en el código de ejemplo.
  #3 (permalink)  
Antiguo 29/08/2005, 05:29
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
Lo he puesto asi, pero me sigue haciendo lo mismo, el campo q kiero obtener es asi. Como podria obtener esos datos de otra forma??
  #4 (permalink)  
Antiguo 29/08/2005, 05:39
 
Fecha de Ingreso: diciembre-2004
Mensajes: 120
Antigüedad: 13 años
Puntos: 0
Prueba con esto, poniendo los valores de conexion que uses en las variables $db y $link.

<?
$db = "prueba";
$link = mysql_connect("127.0.0.1","root","");
mysql_select_db($db, $link);

$sql1= mysql_query (" SELECT group_name FROM email_group");

while($result= mysql_fetch_array ($sql1))
{
echo $result[group_name];
echo "<br>";
}
?>
  #5 (permalink)  
Antiguo 29/08/2005, 05:51
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
Gracias ahora me funciona. Me podrias explicar el pq???
  #6 (permalink)  
Antiguo 29/08/2005, 06:11
 
Fecha de Ingreso: diciembre-2004
Mensajes: 120
Antigüedad: 13 años
Puntos: 0
Claro.
El problema que tenias es que cuando te devuelve un resource id te está devolviendo el identificador de la transacción (que iria en $sql1), pero para ver los datos, tienes que "tratar" ese id, con un mysql_fetch_array , un mysql_fetch_row, o la función que sea más adecuada según el caso. En este en concreto, lo que hacemos es guardar en la variable $result el resultado de pasarle a la función mysql_fetch_array el id conseguido con la select.
El while está puesto para que siga comprobando mientras hay resultados, en vez de mostrar solo el primero.
Espero habertelo aclarado un poco.
También voy a editar la corrección que te puse al principio, no te funcionaba porque me equivoque en unas comillas, mea culpa.
  #7 (permalink)  
Antiguo 31/08/2005, 11:25
Avatar de indie81  
Fecha de Ingreso: octubre-2004
Ubicación: Zaragoza
Mensajes: 294
Antigüedad: 13 años, 2 meses
Puntos: 10
Iba a preguntar lo mismo, porque me salia tambien lo de 'resource id 7', pero buscando he llegado a esta respuesta. Asi que solo queria dar las gracias a Flopi, que lo ha explicado muy bien.
Y de paso hago otra consulta: de esta forma se muestran los datos, todos seguidos. Como los puedo mostrar en una tabla, para que quede mas elegante?
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 17:00.