Foros del Web » Programando para Internet » PHP »

problemas con mysql_num_rows

Estas en el tema de problemas con mysql_num_rows en el foro de PHP en Foros del Web. Hola amigos... Necesito ayuda, tengo problemas con mysql_num_rows(): el mensaje es: supplied argument is not valid MySql Porque se da este mensaje, porque el script ...
  #1 (permalink)  
Antiguo 21/10/2003, 13:20
 
Fecha de Ingreso: octubre-2003
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
Exclamación problemas con mysql_num_rows

Hola amigos...

Necesito ayuda, tengo problemas con mysql_num_rows():
el mensaje es:
supplied argument is not valid MySql
Porque se da este mensaje, porque el script corre perfectamente en windows con php, pero en linux red hat 9 no funciona.

Porfa lo necesito de urgencia.

atte
ciaf
  #2 (permalink)  
Antiguo 21/10/2003, 14:05
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 15 años, 9 meses
Puntos: 54
1- Comprueba que la base de datos esté funcionando perfectamente, y comprueba palabra a palabra el QUERY que estés haciendo.
2- Muestra el código
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #3 (permalink)  
Antiguo 21/10/2003, 14:30
 
Fecha de Ingreso: octubre-2003
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
aqui esta el codigo...

<?
header("Expires: " . gmdate("D, d M Y H:i:s")-1 . " GMT"); // Datum aus Vergangenheit
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // immer geändert
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0

require('configuracion.php');

$strSigPagina="general.php"; //Pagina que se envia informacion
$strActPagina="execLogin.php"; //Pagina actual
$strAntPagina="index.htm"; //Pagina anterior
$bolAutentificacion = false; //Autentifica la Página

if(isset($HTTP_POST_VARS))
{
if (isset($HTTP_POST_VARS["txtUsuario"]))
{
$idUsu =$HTTP_POST_VARS["txtUsuario"];
$claveUsu =$HTTP_POST_VARS["txtClave"];
}
else
{
$idUsu ="empty";
$claveUsu ="empty";

}

//Conectar a la BDD
$gconBDD = mysql_connect($garrConexion[0], $garrConexion[1], $garrConexion[2]);
mysql_select_db($garrConexion[3], $gconBDD);

$gstrQuery ="select idUsu, nombreUsu, telefonoUsu, claveUsu, estadoUsu, fCreacionUsu";
$gstrQuery.=" from usuario";
$gstrQuery.=" where idUsu='$idUsu'";
$gstrQuery.=" and claveUsu='$claveUsu'";
$gstrQuery.=" and estadoUsu=1";
$grecDatos = mysql_query($gstrQuery, $gconBDD);

if(mysql_num_rows($grecDatos)>0)
{
$garrRegistro = mysql_fetch_assoc($grecDatos);
$bolAutentificacion = true;
}else{
$bolAutentificacion = false;
}
}
?>

<?
if($bolAutentificacion == true)
{?>
<script language=javascript>
window.location.href='<? echo($strSigPagina)?>';
</script>
<?
}else{
?>
<script language=javascript>
window.location.href='<? echo($strAntPagina)?>';
</script>
<?
}
?>
  #4 (permalink)  
Antiguo 21/10/2003, 14:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Yo usaría un COUNT(*) de Msyql en la consulta .. y ver si me arroja 1 registro (se supone que ha de ser único tus par de usuario/password ..) ..

Código PHP:
$sql="SELECT COUNT(*) FROM tabla WHERE .. tu actual condición ..."
Y obtengo su valor con

Código PHP:
$consulta=mysql_query($sql);
$total=mysql_result($consulta,0);

if (
$total == 1){
// autentificado ...
} else {
// NO autentificado ...

----------------

Observacion:

Cuidado con esos redireccionamientos javacsript .. sería recomendable que usases PHP y cabeceras HTTP tipo:

Código PHP:
header("Location: nose.php");
exit; 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 21/10/2003 a las 14:47
  #5 (permalink)  
Antiguo 21/10/2003, 14:51
 
Fecha de Ingreso: octubre-2003
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
No, creo que esta bien....

Segun lo que he visto, el utilizar eso con etiquetas html, da conflictos con la cabeceras y posterioremente tendras que adicionar una linea mas para manejar el buffer..., ya lo intente...

Saludos
  #6 (permalink)  
Antiguo 21/10/2003, 15:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
carauz ..

Si usas cabeceras HTTP (mandas al navegador con header() ) ..lo unico que tienes que -saber- es en organizar tu código HTML para que no sea enviado antes de usar tus header() .. (Te aseguro que se puede hacer .. Yo no uso redireccionamientos javascript ni ob_start() (funciones de manejo del buffer par tal fin)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 21/10/2003, 15:06
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Y para cuando tengas problemas con alguna consulta, siempre puedes usar:
Código PHP:
 $grecDatos mysql_query($gstrQuery$gconBDD) or die("Error $gstrQuery <br>MySQL dice: ".mysql_error()); 
Asi veras el mensaje de error de MySQL.

Y yo el unico HTML que veo son las etiquetas <script>, que se quitarian al poner el header("Location"), asi que no veo el problema. A no ser que haya mas codigo. Pero por delante no hay seguro, porque sino no funcionarian los primeros header().

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 21/10/2003, 15:10
 
Fecha de Ingreso: octubre-2003
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
Gracias por el comentario...

Ya que estamos en esto, te agradeseria que me des un peque ejemplo de como puedo ordenar mi codigo html para no tener porblemas con los header.

Y una pregunta mas, como puedo verificar que se esta conectando el usuario, a esa bdd, con esa contraseña??

Gracias, por los consejos...
  #9 (permalink)  
Antiguo 21/10/2003, 15:18
 
Fecha de Ingreso: octubre-2003
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
Y una pregunta mas, como puedo verificar que se esta conectando el usuario, a esa bdd, con esa contraseña??

Porque si es cierto, lo que me dicen, necesito saber si en la conexion no es donde fallan...???

Gracias, por los consejos...

atte
ciaf

  #10 (permalink)  
Antiguo 21/10/2003, 16:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No entiendo tu pregunta ...

Te refieres a cuando se está conectando a tu BD? ..

mysql_connect() ?

O te refieres a que datos están enviando desde tu formulario de autentificación (donde pides tu usuario/password) y que lo mandas a ese código para hacer la consulta a tu BD y chequear que exista un registro con esas caracteristicas (usuario/password)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 23/10/2003, 09:39
 
Fecha de Ingreso: octubre-2003
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
Ayuda...

Amigo...

Necesito ayuda, ya me conecto a mysql poruqe lo instale nuevamente, y no pues ninguna clave para root, ahora ya puedo ver los datos..., entonces cree un usuario con

insert into user values("%", "nombredeusuario", password("clavedeusuario"), "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y");
insert into db values ("%", "basededatosconcreta", "nombredeusuario", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y");
exit;

y posteriormente

mysqladmin reload

Y con ese usuario, no me puedo conectar.... que pasa???

Gracias, por la ayuda
  #12 (permalink)  
Antiguo 29/10/2003, 09:54
Avatar de SkyWalker  
Fecha de Ingreso: enero-2002
Mensajes: 39
Antigüedad: 15 años, 11 meses
Puntos: 0
Hola, hace un tiempecillo que hagos cosillas con php y mysql pero simpre en windows, ahora intento poko a poko introducirme en esto de linux, bien el problema es q cuando copio mis scripts (que funcionan perfectamente en windows y en el hosting de internet que va sobre linux), no funcionan correctamente, si sobre las cuestiones de php pero cuando conecta a la base de datos mysql me salen los mensajes de error, entre ellos mysql_fetch_row() o mysql_num_rows(), otras funciones actuan correctamente. La verdad es q no se donde está el problema... por ejemplo phpMyAdmin funciona correctamente y seguro que utiliza estas funciones todo el rato.

Esto sería un ejemplo del la forma que utilizo siempre para conectar a mysql:

En un archivo de configuracion q llamo con include():
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "una";

$conectarbd = mysql_connect ($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);

En el fichero del script:

$sql="SELECT * FROM laqsea";
$query = mysql_query($sql,$conectarbd);
$registros=mysql_num_rows($query);

ECHO "Registros:".$registros."<br>";

while (list($variables) = mysql_fetch_row($query)) {
ECHO"$variables";
}

Dónde stá el problema? debe configurar algun archivo de php.. mysql?

Gracias!
  #13 (permalink)  
Antiguo 29/10/2003, 10:05
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Siempre que te de un mensaje de error, copialo literalmente en tu pregunta. Sobre todo si dices que el codigo te funciona perfectamente en windows.

Es que adivinar la causa, sobre todo si es de configuracion, sin el mensaje de error, y sin acceso al servidor para hacer pruebas, es como un pelin dificil (sobre todo con la bola de cristal en el taller).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #14 (permalink)  
Antiguo 29/10/2003, 14:27
Avatar de SkyWalker  
Fecha de Ingreso: enero-2002
Mensajes: 39
Antigüedad: 15 años, 11 meses
Puntos: 0
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/html/miswebs/eventosi_V1/html/admin/config.php on line 24

o por ejemplo:


Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /var/www/html/miswebs/eventosi_V1/html/admin/administrador.php on line 120

Con phpMyAdmin le he cambiado al usuario root la contraseña q no tenia ninguna y le he puesto otra, y hace unas semanas probre con otras paginas y me daban estos errores y ahora que le he puesto en mi archivo de configuración la nueva contraseña para root, no me los da ... pero estos otros me siguen dando los mensajes de error y utilizo el mismo método con total seguridad (solo por comodidad :) )

Gracias de nuevo!
  #15 (permalink)  
Antiguo 29/10/2003, 15:10
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Pues ese error es producido porque la consulta que intentabas ejecutar ha producido un error en MySQL. Para ver ese error debes usar mysql_error() (www.php.net/mysql_error). Normalmente se usa asi:
Código PHP:
$query mysql_query($sql,$conectarbd) or die("Error: $sql <br>MySQL dice: ".mysql_error()); 
El die() es para finalizar la ejecucion del script en ese punto mostrando el mensaje.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #16 (permalink)  
Antiguo 29/10/2003, 17:47
Avatar de SkyWalker  
Fecha de Ingreso: enero-2002
Mensajes: 39
Antigüedad: 15 años, 11 meses
Puntos: 0
Gracias, muchas gracias, estoy realmente tonto!, siento haber hecho perder el tiempo, ... me anotaré lo de mysql_error() para cuando tenga problemas.

El fallo estaba en que simplemente al copiar la base de datos había puesto un nombre distinto, por tanto, no la seleccionaba correctamente y me daba todos los mensajes de error... de verdad q me merezco un capón!

Gracias de nuevo, Saludos
  #17 (permalink)  
Antiguo 30/10/2003, 03:53
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
No te preocupes. Asi has ganado experiencia, definida como aprender de nuestra coleccion de errores. Y asi aprender de la experiencia de los demas, es aprender de los errores de los demas. Por lo que quien mas experiencia tiene es el que mas se ha equivocado

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #18 (permalink)  
Antiguo 30/10/2003, 08:14
 
Fecha de Ingreso: octubre-2003
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
Estimados amigos del foro...

Lo que ha dicho josemi, es muy util con die(), y agradesco su ayuda, y una cosa mas tengo un problema con el usuario creado en mysql, ya que me intento conectar con ese usuario a la base y me da el problema de:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

lo resolvi poniendo sin password al root y conectandome si password, me podrian como puedo resolver eso...

de antemano gracias
  #19 (permalink)  
Antiguo 30/10/2003, 08:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
carauz .. sería recomendable que iniciaras un nuevo tema con tu pregunta y que adjuntes el código que estés usando y expliques el problema más detalladamente ..

En principio si vas haciendo "or die(mysql_error())" en todas las funciones que se usan para acceder a mysql: mysql_connect() .. mysql_query() .. etc Seguro que verás el error concreto que te dá Mysql .. por ejemplo "que tal usuario no es válido" (digo usuario de Mysql .. no de tu aplicación )

Pero, insisto .. inicia un nuevo tema.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #20 (permalink)  
Antiguo 30/10/2003, 08:28
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
carauz, ese error te lo da si el parametro de mysql_num_rows() no es valido. Y el parametro de mysql_num_rows() es lo que devuelve el mysql_query(). Asi que la causa es que el mysql_query() no devuelve un valor valido. Asi que para saber el error debes poner el

or die("...".mysql_error());

en el mysql_query() correspondiente. Y de ahi sacas el mensaje de error.

Si dices que andas cambiando de usuario, quizas el problema es permisos, o que no te ha cogido los cambios.

Saludos.

PD: Las consultas para crear el usuario me parecen correctas. Quizas si repites el usuario poniendo "localhost", creo que asi esta para el root: 2 entradas, una con "localhost" y otra con "%". Tanto para user como para db. Simplemente por si "localhost" no esta incluida en "%".
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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:38.