Foros del Web » Programando para Internet » PHP »

consulta a bases dentro de una funcion

Estas en el tema de consulta a bases dentro de una funcion en el foro de PHP en Foros del Web. Llevo ya media hora probando y no termino de entender pork esta funcion funciona asi: Código: function resultados() { $res_coinc = mysql_query("SELECT * FROM coincidencias ...
  #1 (permalink)  
Antiguo 30/08/2007, 11:07
 
Fecha de Ingreso: marzo-2004
Mensajes: 283
Antigüedad: 20 años, 1 mes
Puntos: 2
consulta a bases dentro de una funcion

Llevo ya media hora probando y no termino de entender pork esta funcion funciona asi:

Código:
function resultados() 
{
	$res_coinc = mysql_query("SELECT * FROM coincidencias WHERE (receptor = '4256')");
	$datos = array();
	while($datos_coinc = mysql_fetch_assoc($res_coinc))    $datos[] = $datos_coinc;
	return $datos;
}
pero no asi:
Código:
function resultados() 
{
            $id_user = 4256;
	$res_coinc = mysql_query("SELECT * FROM coincidencias WHERE (receptor = '$id_user')");
	$datos = array();
	while($datos_coinc = mysql_fetch_assoc($res_coinc))    $datos[] = $datos_coinc;
	return $datos;
}
Seguro k es una tonteria, pero no termino de hacer k funcione de la segunda manera, ya k necesito en el campo where meter una variable y no su valor fijo como en la primera manera. Un saludo
  #2 (permalink)  
Antiguo 30/08/2007, 11:17
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Re: consulta a bases dentro de una funcion

Lo que pasa es que un porblema, por asi llamarlo de sintaxis, puesto que cuando php llega a ese linea ve que tu variable esta entre comillas simples y esto significa para php que lo que este entre las comillas simples no lo interprete por lo que te sugiero que lo cambies por

Código PHP:
$res_coinc mysql_query("SELECT * FROM coincidencias WHERE (receptor = '{$id_user}')")or die(mysql_error()); 
Saludillos
  #3 (permalink)  
Antiguo 30/08/2007, 12:19
 
Fecha de Ingreso: marzo-2004
Mensajes: 283
Antigüedad: 20 años, 1 mes
Puntos: 2
Re: consulta a bases dentro de una funcion

Gracias mauled por contestar pero acabo de probar y sigo en las mismas. Antes no lo comente xo en ninguno de los dos casos (el mio y el tuyo) se arroja ningun error, la pagina carga correctamente pero sin devolver resultados la consulta. Tambien decir k la misma consulta hecha fuera de la funcion k mostre antes estando escrita con la misma sintaxis, vamos estando escrita exactamente igual, devuelve los resultados perfectamente. Asi k lo siguiente k probe fue a colocar la consulta fuera de la funcion pero entonces la funcion da este error:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result
K es lo k esta pasando? ya no se k probar. Un saludo
  #4 (permalink)  
Antiguo 30/08/2007, 12:52
 
Fecha de Ingreso: julio-2004
Mensajes: 117
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: consulta a bases dentro de una funcion

Hola, lo de las comillas no creo que sea porque yo uso las variables dentro de las consultas así y no tengo ningún problema con ellas. Si quieres prueba a poner en la consulta que no funciona

Código PHP:

 $res_coinc 
mysql_query("SELECT * FROM coincidencias WHERE (receptor = '$id_user')");

       if (!
$res_coinc) {
        die(
'Error en consulta: ' mysql_error());
       } 
para descartar que sea un fallo en la sentencia sql por alguna chorrada. Lo siento pero no se me ocurren más cosas.

Suerte
__________________
Uno para todos y todos para uno
  #5 (permalink)  
Antiguo 30/08/2007, 13:10
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Re: consulta a bases dentro de una funcion

Mas corretamente es concatenando las variables dentro de la cadena, algo así:
Código PHP:
function resultados() 
{
         
$id_user 4256;
    
$res_coinc mysql_query("SELECT * FROM coincidencias WHERE receptor = '".$id_user."'");
    
$datos = array();
    while(
$datos_coinc mysql_fetch_assoc($res_coinc))    $datos[] = $datos_coinc;
    return 
$datos;

  #6 (permalink)  
Antiguo 31/08/2007, 02:22
 
Fecha de Ingreso: marzo-2004
Mensajes: 283
Antigüedad: 20 años, 1 mes
Puntos: 2
Re: consulta a bases dentro de una funcion

Muchas gracias a todos pero esto sigue igual, no hay manera. Ya he probado con diferentes bases y diferentes consultas, pero si dentro de la consulta k esta a su vez dentro la funcion limitamos los resultados con WHERE, el sistema interpreta la variable k introducimos como valor nulo, vamos k esto funciona perfectamente:
Código:
function resultados() 
{
	$res_coinc = mysql_query("SELECT * FROM coincidencias WHERE (receptor = '4256')");
	$datos = array();
	while($datos_coinc = mysql_fetch_assoc($res_coinc))    $datos[] = $datos_coinc;
	return $datos;
}
pero si en vez de poner el valor directamente, ponemos una variable con ese mismo valor el sistema no lo interpreta (tampoco da error) y la consulta no arroja los resultados deseados.
Código:
function resultados() 
{
            $id_user = 4256;
	$res_coinc = mysql_query("SELECT * FROM coincidencias WHERE (receptor = '$id_user')");
	$datos = array();
	while($datos_coinc = mysql_fetch_assoc($res_coinc))    $datos[] = $datos_coinc;
	return $datos;
}
Es como si dentro de la función no se interpretaran las variables de fuera. Alguna otra idea? Si alguien kiere probar k coja la funcion y haga cualkier consulta a sus bases usando variables dentro del WHERE y a ver k pasa. Muxas gracias

Última edición por SubZero_mb; 31/08/2007 a las 02:33
  #7 (permalink)  
Antiguo 31/08/2007, 12:21
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Re: consulta a bases dentro de una funcion

mmh.. wenas o.o^

o diria que pusiueras un or die(mysql_error()); para ver que error te da mysql..

Código PHP:
$id_user 4256;
$res_coinc mysql_query("SELECT * FROM coincidencias WHERE receptor = '$id_user'") or die(mysql_error()); 
Ahora, que si le quieres pasar una variable desde fuera, debes pasarsela por medio de un parametro a la funcion o usando global $variable;

Código PHP:
function resultados ($id_user) {
//......
$res_coinc mysql_query("SELECT * FROM coincidencias WHERE receptor = '$id_user'");
//......

Código PHP:
$id_user 4256;
function 
resultados() {
global 
$id_user;
$res_coinc mysql_query("SELECT * FROM coincidencias WHERE receptor = '$id_user'");

__________________
Sin Ideas
  #8 (permalink)  
Antiguo 31/08/2007, 12:43
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: consulta a bases dentro de una funcion

1- No tiene nada que ver que este entre comillas simples, ya que engloba las comillas dobles!
2- Es muy raro, te recomiendo como dicen que pongas un mysql_error, y que declares el query en una variable y veas que es lo que te da como salida:

Código PHP:
function resultados(){
    
$id_user 4256;
    
$sql "SELECT * FROM coincidencias WHERE receptor = '$id_user' ";
    
$res_coinc mysql_query($sql) or die( mysql_error() . ' en el query: 'nl2br($sql) ); #Si hay un error veremos que tiene y que error
    
echo nl2br($sql); #Y si pasa veamos que contiene...
    
$datos = array();
    while(
$datos_coinc mysql_fetch_assoc($res_coinc)) $datos[] = $datos_coinc;
    return 
$datos;

__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #9 (permalink)  
Antiguo 01/09/2007, 14:25
 
Fecha de Ingreso: marzo-2004
Mensajes: 283
Antigüedad: 20 años, 1 mes
Puntos: 2
Re: consulta a bases dentro de una funcion

Joe oso96_2000 muxisimas gracias, era eso! No tenia ni idea k dentro de una funcion no se recogian variables externas y por eso nada funcionaba, despues de incluir global $id_user; dentro de la funcion todo salio como tenia k salir. K alivio! (la otra manera k propones, la de dejarlo asi: function resultados($id_user){ mo me funciono, me daba un error) Muxas gracias de nuevo a ti y a todos los k os habeis molestado tanto en ayudarme!
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 13:03.