Foros del Web » Programando para Internet » PHP »

Como usar dato devuelto de una query?

Estas en el tema de Como usar dato devuelto de una query? en el foro de PHP en Foros del Web. Hola a todos, hago la siguiente query: $campos=mysql_db_query($base,"SELECT actividad.id_act FROM actividad, detalle_actividad where actividad.cod=61"); Luego dentro de un whilequiero usar el id_act en otra consulta. ...
  #1 (permalink)  
Antiguo 31/12/2003, 15:01
 
Fecha de Ingreso: noviembre-2002
Mensajes: 273
Antigüedad: 15 años, 1 mes
Puntos: 0
Como usar dato devuelto de una query?

Hola a todos,

hago la siguiente query:
$campos=mysql_db_query($base,"SELECT actividad.id_act FROM actividad, detalle_actividad where actividad.cod=61");

Luego dentro de un whilequiero usar el id_act en otra consulta. Lo hago asi:

while($listado=mysql_fetch_assoc($campos)) {

$sqlemp=mysql_db_query($base,"SELECT * FROM empleado where id_emp=$listado[id_act]" );
$emp=mysql_fetch_assoc($sqlemp);
echo $emp['nombre'];

La query sqlemp me da el tipico error de que no es un argumento valido.

Como puedo usar ese valor en la query?

Muchas gracias y FELIZ AÑO 2004!!!
  #2 (permalink)  
Antiguo 31/12/2003, 17:21
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Ya se ha dicho esto antes... pero no está de más...

Cuatro cosas:

1.-)Para poder localizar errores de este tipo con mayor transparencia, es mejor guardar en una variable la cadena que se pasará como parámetro de una función.

2.-)Pide a mysql que te informe de errores.

3.-)Mejor separa los arrays en las cadenas... no estoy muy seguro, pero creo que eso da problemas. Utiliza el operador punto para concatenar.

4.-)Utiliza comillas simples para los valores en una SQL.

O sea que tu código sería más fácil de manejar así:
Código PHP:
//Seleccionar la bd previamente:
mysql_select_db($base$conexion) or die("Error al seleccionar DB :".mysql_error());

//Guardas en una variable la cadena con la consulta:
$sql="SELECT actividad.id_act FROM actividad, detalle_actividad where actividad.cod='61'";

//Realizas la consulta:
$campos=mysql_query($sql) or die("Error en consulta 1: ".mysql_error());

//********************************//

//Y de la misma forma en la otra consulta:

while($listado=mysql_fetch_assoc($campos)) {

$sql2="SELECT * FROM empleado where id_emp='".$listado['id_act']."'" 
$sqlemp=mysql_query($sql2) or die("Error en consulta 2:".mysql_error());
$emp=mysql_fetch_assoc($sqlemp);
echo 
$emp['nombre']; 
El die() detendrá la ejecución del script y te informará del error mysql.
El hecho de separar las cadenas de SQL en variables, te permitirá verificar que se esté pasando una sentencia válida... por ejemplo, si te sale que no es un argumento válido... le agregas la línea echo $sql; y te mostrará el sql que estás pasando...
Es cierto que son unas cuantas líneas de más, pero tendrás más control de los errores en tu código.

Te recomiendo leer la página de josemi... hay muchos consejos sobre esto.

Saludos

Última edición por jpinedo; 31/12/2003 a las 17:22
  #3 (permalink)  
Antiguo 31/12/2003, 17:26
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Página de josemi "COMO LOCALIZAE ERRORES":

http://usuarios.lycos.es/josemifaq/caza_errores.html

Saludos
  #4 (permalink)  
Antiguo 02/01/2004, 05:51
 
Fecha de Ingreso: noviembre-2002
Mensajes: 273
Antigüedad: 15 años, 1 mes
Puntos: 0
Muchas gracias,

solo con meter la SELECT en una variable se ha solucionado el problema.

Eso si, no entiendo el porque..., pero lo bueno es que ahora funciona.

Muchas gracias,

FELIZ 2004
  #5 (permalink)  
Antiguo 02/01/2004, 18:52
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Bueno... a veces pasa...

Pero yo creo que el error estaba en meter el array directamente... o en no utilizar las comillas simples en los valores...

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 05:26.