Foros del Web » Programando para Internet » PHP »

¿Me ayudan a descubrir el error por favor?

Estas en el tema de ¿Me ayudan a descubrir el error por favor? en el foro de PHP en Foros del Web. Hola :) Miren, tengo un sistema de Login, y funciona correctamente, todos los datos que solicito de cada usuario los muestra correctamente, etc... ahora bien... ...
  #1 (permalink)  
Antiguo 17/11/2008, 12:04
 
Fecha de Ingreso: agosto-2008
Mensajes: 52
Antigüedad: 15 años, 7 meses
Puntos: 1
Exclamación ¿Me ayudan a descubrir el error por favor?

Hola :)

Miren, tengo un sistema de Login, y funciona correctamente, todos los datos que solicito de cada usuario los muestra correctamente, etc...

ahora bien... tengo un error y no sé como repararlo y a pesar de que este error se registra en mi error_log todas mis paginas funcionan correctamente, todos los datos consultados igual se ven... y pues no sé en que pagina esta el error porque no me dice...

El error que me da es este:

Cita:
[16-Nov-2008 07:41:28] PHP Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/libreriac/public_html/sun/functions.php on line 11
El código del archivo functions.php es el siguiente:

Código PHP:
<?php
function user_info($field='') {
if(empty(
$field))
return 
false;

$accepted = array('ID''username''user_password''sps''ssps''enmadesafio''imgcoded''avycollector''kads''quests''detective''sunyreto''auctions''tms''sunyplot''top10''avatar''categoria''IDCard');
if(!
in_array($field$accepted)) 
return 
false;

$result mysql_query("SELECT "$field ." FROM miembros WHERE ID = "$_SESSION['LibISDs_Login'] .";");
if(
!= mysql_num_rows($result)) :
return 
false;

else :
$row mysql_fetch_assoc($result);
return 
$row[$field];

endif;
}
?>

Y TODAS mis paginas web incluyen al inicio:

Código PHP:
<?php
session_start
();
if(!
session_is_registered('LibISDs_Login')) :
    
header('Location: login.php?msg=requires_login');
endif;
include 
'dbSUN.php';
include 
'functions.php';
?>

Alguien me podría por favor ayudar a descubrir este error que, aunque no impide que sitio funcione correctamente todos los dias se registra en mi error_log del servidor...?

Gracias de antemano
  #2 (permalink)  
Antiguo 17/11/2008, 12:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: ¿Me ayudan a descubrir el error por favor?

hola.... a todos lo query que hagas agrégale esto

Código PHP:
mysql_query(...) OR die(mysql_error()); 
ya que asumes que no hay errores, y eso esta mal... hay que controlar todo
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 17/11/2008, 12:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: ¿Me ayudan a descubrir el error por favor?

Ese error te indica que tu query esta mal, esto puede ser porque alguien esta tratando de entrar a tu sitio web usando exploitz, o algo por el estilo, siempre es recomendable ver que error te lanza mysql despues de un query imprimiendo el valor de mysql_error().

Saiods
  #4 (permalink)  
Antiguo 17/11/2008, 12:16
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: ¿Me ayudan a descubrir el error por favor?

Pon tu codigo asi:

$result = mysql_query("SELECT ". $field ." FROM miembros WHERE ID = '". $_SESSION['LibISDs_Login'] ."'");
if(mysql_num_rows($result)<=0) :
return false;


Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #5 (permalink)  
Antiguo 17/11/2008, 12:52
 
Fecha de Ingreso: agosto-2008
Mensajes: 52
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: ¿Me ayudan a descubrir el error por favor?

Cita:
Iniciado por pateketrueke Ver Mensaje
hola.... a todos lo query que hagas agrégale esto

Código PHP:
mysql_query(...) OR die(mysql_error()); 
ya que asumes que no hay errores, y eso esta mal... hay que controlar todo

Muchas gracias por explicarme mi error, asumo entonces que mi codigo en el query debería ser asi:

Código PHP:
;

$result mysql_query("SELECT "$field ." FROM miembros WHERE ID = "$_SESSION['LibISDs_Login'] .";") OR die(mysql_error(); 

Ahora bien, gracias a masterojitos tengo otra posible solución:

Código PHP:
$result mysql_query("SELECT "$field ." FROM miembros WHERE ID = '"$_SESSION['LibISDs_Login'] ."'");
if(
mysql_num_rows($result)<=0) :
return 
false
Mi pregunta es, ¿ambas soluciones dan el mismo resultado?

Gracias :)
  #6 (permalink)  
Antiguo 17/11/2008, 13:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: ¿Me ayudan a descubrir el error por favor?

no... la primera no es una solución como tal...

si ya la ejecutaste debes haberlo notado ya...

el primer modo, es modo de depuración (debug) de tu SQL ...

el segundo, si parece ser una solución... no?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 17/11/2008, 14:47
 
Fecha de Ingreso: agosto-2008
Mensajes: 52
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: ¿Me ayudan a descubrir el error por favor?

Cita:
Iniciado por pateketrueke Ver Mensaje
no... la primera no es una solución como tal...

si ya la ejecutaste debes haberlo notado ya...

el primer modo, es modo de depuración (debug) de tu SQL ...

el segundo, si parece ser una solución... no?
Ok... mire he modificado así todo:

Código PHP:
<?php
function user_info($field='') {
if(empty(
$field))
return 
false;

$accepted = array('ID''username''user_password''sps''ssps''enmadesafio''imgcoded''avycollector''kads''quests''detective''sunyreto''auctions''tms''sunyplot''top10''avatar''categoria''IDCard');
if(!
in_array($field$accepted)) 
return 
false;

$result mysql_query("SELECT "$field ." FROM miembros WHERE ID = "$_SESSION['SUNy_Login'] .";");
if(
!= mysql_num_rows($result)<=0) :
return 
false;

else :
$row mysql_fetch_assoc($result);
return 
$row[$field];

endif;
}
?>
Y cuando abro la sesión y solicito el print no sale nada, los datos que deberían mostrarse sale como espacio vacio... Supongo es porque mi loguin funciona en base a las IDs de cada persona...

entonces cambie de:

Cita:
if(1 != mysql_num_rows($result)<=0) :
al siguiente:

Cita:
if(1 != mysql_num_rows($result)>=0) :
Argumentando que "<=0" indica MENOR A 0, y pues como todos los IDs son del 1 al 100 o infinito, pues pensé era lo más apropiado.

Al logear ya puestra los datos, pero ahora en el error_log me arroja 2 errores x_x:


Cita:
[17-Nov-2008 15:28:33] PHP Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/libreriac/public_html/sun/functions.php on line 11
[17-Nov-2008 15:28:33] PHP Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/libreriac/public_html/sun/functions.php on line 15

x_x... ahora, intente poner el OR die, pero sucede que si lo pongo ya no se muestra mi pagina me sale un error asi:

Codigo PHP:
Código PHP:
$result mysql_query("SELECT "$field ." FROM miembros WHERE ID = "$_SESSION['SUNy_Login'] .";") OR die(mysql_error(); 
Error:
Cita:
Parse error: syntax error, unexpected ';' in /home/libreriac/public_html/sun/functions.php on line 10

¿Cómo podría arreglarlo :(?
  #8 (permalink)  
Antiguo 17/11/2008, 15:13
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: ¿Me ayudan a descubrir el error por favor?

haber, nose si eres .... o te haces
que no sabes ni copiar bien el texto????

debes quitarle [if(1 != ] y el ; de tu selec en tu codigo........

pon asi ps amigo:
$result = mysql_query("SELECT ". $field ." FROM miembros WHERE ID = '". $_SESSION['LibISDs_Login'] ."'");
if(mysql_num_rows($result)<=0) :


y el [Argumentando que "<=0" indica MENOR A 0, y pues como todos los IDs son del 1 al 100 o infinito, pues pensé era lo más apropiado.], ps le puse <=0, debido a que tu devuelves un return false si no encuantra registros en el select o no????

.....
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog

Última edición por masterojitos; 17/11/2008 a las 15:49
  #9 (permalink)  
Antiguo 17/11/2008, 15:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: ¿Me ayudan a descubrir el error por favor?

una cosa mas.... el punto y coma de tu sentencia de SQL es el que provoca el error... no se si lo sabias pero no puedes meter eso ahí (aunque signifique fin de sentencia)

de veras!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 17/11/2008, 16:03
 
Fecha de Ingreso: agosto-2008
Mensajes: 52
Antigüedad: 15 años, 7 meses
Puntos: 1
Cita:
Iniciado por masterojitos Ver Mensaje
haber, nose si eres .... o te haces
que no sabes ni copiar bien el texto????

debes quitarle [if(1 != ] y el ; de tu selec en tu codigo........

pon asi ps amigo:
$result = mysql_query("SELECT ". $field ." FROM miembros WHERE ID = '". $_SESSION['LibISDs_Login'] ."'");
if(mysql_num_rows($result)<=0) :


y el [Argumentando que "<=0" indica MENOR A 0, y pues como todos los IDs son del 1 al 100 o infinito, pues pensé era lo más apropiado.], ps le puse <=0, debido a que tu devuelves un return false si no encuantra registros en el select o no????

.....
Gracias, acepto tu comentario por el descuido que cometí, la verdad no copie el texto, solo noté el agregado de "<=0" e igual lo agregué yo...

También te agradesco mucho haberme explicado el motivo de la existencia de este

Cita:
Iniciado por pateketrueke Ver Mensaje
una cosa mas.... el punto y coma de tu sentencia de SQL es el que provoca el error... no se si lo sabias pero no puedes meter eso ahí (aunque signifique fin de sentencia)

de veras!
Si, comprendo que mi error es en el ; y es un hecho que ahi no va... pero tu respuesta me deja igual que antes... ¿podrías orientarme un poco más por favor en la ubicación de esta?

Última edición por GatorV; 17/11/2008 a las 16:52
  #11 (permalink)  
Antiguo 17/11/2008, 16:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: ¿Me ayudan a descubrir el error por favor?

y volvemos al principio... acaso no te das cuenta de lo que haces??

Código PHP:
$result mysql_query("SELECT "$field ." FROM miembros WHERE ID = "$_SESSION['LibISDs_Login'] .";"); 
analiza esta parte, y dime... si de veras te hacia falta...

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 17/11/2008, 16:34
 
Fecha de Ingreso: agosto-2008
Mensajes: 52
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: ¿Me ayudan a descubrir el error por favor?

Cita:
Iniciado por pateketrueke Ver Mensaje
y volvemos al principio... acaso no te das cuenta de lo que haces??

Código PHP:
$result mysql_query("SELECT "$field ." FROM miembros WHERE ID = "$_SESSION['LibISDs_Login'] .";"); 
analiza esta parte, y dime... si de veras te hacia falta...

en este inicio tenía un ";" después de especificar el valor que debe ir en ID

algo asi como

WHERE ID = ID DE LA SESIÓN ;

Con la solución que ofreció masterojitos se removió el ; y se envolvio el valor del resultado de la ID de la sesión con apóstrofes

WHERE ID = 'ID DE LA SESIÓN'

Normalmente consideraría que la primera con comillas pensaba que estaba bien, pues por ejemplo he visto otros ejemplos donde finalizan con ; las especificaciones de lo que se tomará de la base de datos...

Honestamente esta es la diferencia que encuentro...
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 03:13.