Foros del Web » Programando para Internet » PHP »

¿Porque me sale este mensaje?

Estas en el tema de ¿Porque me sale este mensaje? en el foro de PHP en Foros del Web. Hola, haber si alguien me puede ayudar. Me aparece este mensaje: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\web.php on ...
  #1 (permalink)  
Antiguo 12/02/2010, 14:59
 
Fecha de Ingreso: febrero-2010
Mensajes: 24
Antigüedad: 14 años, 2 meses
Puntos: 0
¿Porque me sale este mensaje?

Hola, haber si alguien me puede ayudar.

Me aparece este mensaje:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\web.php on line 21


el codigo es este:

Código PHP:
<head>
<title>identificando
</title>
</head>
<body bgcolor="303030">
<body text="#E5E5E5">
<font face="tahoma">
<font size="2">
<body link="#E5E5E5" vlink="E5E5E5">
<p align="center">
<STRONG>COMPROVANDO</STRONG>
<br><br>
<?
$host
="localhost";
$user="******";
$password="*******";
$db="********";
$enlace mysql_connect($host,$user,$password);
mysql_select_db($db,$enlace);
$consulta mysql_query("SELECT nombre FROM usuarios WHERE usuario LIKE '$usuario' and contraseña LIKE '$cont'",$enlace);
$datomysql_fetch_array ($consulta);
$cambia$dato["nombre"];
echo 
"<hr size = 10 color = ffffff width = 100% align = left>=";
if (
$dato ==""){
echo 
"Los datos no son correctos,  <a href=formregistrados.php>Volver";
}else{
echo     
"<STRONG>Bienvenido a nuestra web $cambia</STRONG>";
}
?>
Muchas gracias
  #2 (permalink)  
Antiguo 12/02/2010, 15:03
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: ¿Porque me sale este mensaje?

Porque, en la linea 21, el argumento suministrado no es un recurso de resultado de MySQL valido :teach:
Lo mas probable es que sea un error en la consulta -o-
  #3 (permalink)  
Antiguo 12/02/2010, 15:16
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: ¿Porque me sale este mensaje?

Código PHP:
Ver original
  1. $consulta = mysql_query("SELECT nombre FROM usuarios WHERE usuario='$usuario' and contraseña='$cont'",$enlace) or die ("error". mysql_error());
Te faltaba or die. Además, es mejor la comparación en sql que el like en estos casos.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #4 (permalink)  
Antiguo 12/02/2010, 15:22
 
Fecha de Ingreso: febrero-2010
Mensajes: 24
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ¿Porque me sale este mensaje?

la verdad, no entiendo mucho(estoy aprendiendo).
Entonces que deveria hacer?
  #5 (permalink)  
Antiguo 12/02/2010, 15:22
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: ¿Porque me sale este mensaje?

si usas like en una consulta tienes que poner el % que no se te olvide.
  #6 (permalink)  
Antiguo 12/02/2010, 15:28
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: ¿Porque me sale este mensaje?

El poner o no el comodín % afecta los registros encontrados, pero no produce un error en la consulta. De hecho, si lo que se quiere comparar es usuario y contraseña se debería usar el operador de igualdad (=) en lugar de LIKE.

Imprime el valor de mysql_error(), puede que algún nombre de campo o tabla sea incorrecto.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 12/02/2010, 15:30
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: ¿Porque me sale este mensaje?

Cita:
Iniciado por CHuLoSoY Ver Mensaje
Código PHP:
Ver original
  1. $consulta = mysql_query("SELECT nombre FROM usuarios WHERE usuario='$usuario' and contraseña='$cont'",$enlace) or die ("error". mysql_error());
Te faltaba or die.
No "le faltaba", asi haces ver como si fuera necesario, lo cual para nada lo es (aunque si es recomendable para depurar)

Cita:
Iniciado por Death_Empire Ver Mensaje
si usas like en una consulta tienes que poner el % que no se te olvide.
Completamente FALSO, el % es un caracter comodin, que NO se usa si no se requiere, como en este caso. Aunque

Cita:
Iniciado por CHuLoSoY Ver Mensaje
Además, es mejor la comparación en sql que el like en estos casos.
Ya que esta buscando una cadena exacta, y no un patron
  #8 (permalink)  
Antiguo 12/02/2010, 16:22
Avatar de Gulinaidas  
Fecha de Ingreso: febrero-2010
Ubicación: La Plata, ARG
Mensajes: 88
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: ¿Porque me sale este mensaje?

Ese error me ha saltado varias veces....lo solucione cambiando la forma de la sentencia.....en si es la misma pero de forma diferente...fijate!

$consulta = mysql_query("SELECT nombre FROM usuarios WHERE usuario=" . $usuario . " AND contraseña=" . $cont,$enlace) or die ("error". mysql_error());

Saludos
  #9 (permalink)  
Antiguo 12/02/2010, 16:24
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: ¿Porque me sale este mensaje?

Cita:
Iniciado por Gulinaidas Ver Mensaje
Ese error me ha saltado varias veces....lo solucione cambiando la forma de la sentencia.....en si es la misma pero de forma diferente...fijate!

$consulta = mysql_query("SELECT nombre FROM usuarios WHERE usuario=" . $usuario . " AND contraseña=" . $cont,$enlace) or die ("error". mysql_error());

Saludos

No olviden entrecomillar textos cuando los vayamos a comparar:

$consulta = mysql_query("SELECT nombre FROM usuarios WHERE usuario='" . $usuario . "' AND contraseña='" . $cont."'",$enlace) or die ("error". mysql_error());


Por cierto, desaconsejo (y no se bien por que) usar la Ñ para nombres de campos de tablas, o por supuesto tablas en si, o nombres de bases de datos...

Etiquetas: Ninguno
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 01:43.