PHP - error fetch_array

 
Vista:
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error fetch_array

Publicado por Charly (64 intervenciones) el 12/12/2017 16:39:17
Al intentar acceder a una página php introduciendo nombre de usuario y contraseña que está en una bases de datos mysql, me salta este error:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\xampp\foro\index.php on line 45
Otras veces he escrito lo mismo y me funcionaba en otras páginas, pero en esta no.
El código de la página es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<!DOCTYPE html>
<html lang="en">
  <head>
	<title>Login</title>
	<meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  </head>
  <body>
	<div class="container">
      <div align=center class="jumbotron">
	    <img src="php.png">
        <h1 style='text-align:center'><b style='color:blue'>LOGIN</b></h1>
        <h2 style='text-align:center'><b style='color:blue'>Introduce un nombre de usuario y una contraseña para entrar al foro.</b></p>
      </div>
	  <form name='login' action='' method='get'>
	    <div class="form-group">
	      <label for="num">Usuario:</label>
		  <input type='text' class="form-control" placeholder="Introduce un nombre" name='nom' value="<?php $nom ?>"><br>
		  <label for="comment">Contraseña:</label>
		  <input type='password' class="form-control" placeholder="Introduce una contraseña" name='pas' value="<?php $pas ?>"><br>
		  </div>
		<div class="botons-group">
		  <input type="submit" name="entrar" value="ENTRAR">
		  <input type="submit" name="boton2" value="LIMPIAR"><br>
		</div>
	</form>
	</div>
  </body>
</html>
<?php
	if(isset($_GET['entrar'])){
		include("conexionBD.php");
		session_start();
		$nom=$_GET['nom'];
		$pas=$_GET['pas'];
		$esta=false;
		if(conectar()->connect_error){
			die('Error de conexion: '.conectar()->connect_error);
		}else{
			$sql="SELECT username FROM users WHERE username=".$nom."";
			$resul=mysqli_query(conectar(),$sql);
			while($row=mysqli_fetch_array($resul)){
				if($nom==$row['username']&&$pas==$row['password']){
					$esta=true;
				}
			}
			if($esta=true){
				//echo "Existe el usuario!";
				$_SESSION['nom']=true;
				//header("Location:indice.php");
			}else{
				//echo "No existe el usuario!";
				$_SESSION['nom']=false;
				//header("Location:creauser.php");
			}
		}
	}
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error fetch_array

Publicado por xve (6935 intervenciones) el 12/12/2017 17:52:16
Hola Charlie, entiendo que es porque la consulta te devuelve false...

prueba a poner-lo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$sql="SELECT username FROM users WHERE username='".$nom."'"; # <-- fijate que he puesto comillas
$resul=mysqli_query(conectar(),$sql);
if($result)
{
	while($row=mysqli_fetch_array($resul)){
		if($nom==$row['username']&&$pas==$row['password']){
			$esta=true;
		}
	}
	if($esta=true){
		//echo "Existe el usuario!";
		$_SESSION['nom']=true;
		//header("Location:indice.php");
	}else{
		//echo "No existe el usuario!";
		$_SESSION['nom']=false;
		//header("Location:creauser.php");
	}
}else{
	alert("No devuelve ningun resultado");
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error fetch_array

Publicado por Charly (64 intervenciones) el 12/12/2017 20:06:21
He puesto lo siguiente y no me hace nada, no me da ningun problema pero me limpia el formulario y se queda ahí:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
if(isset($_GET['entrar'])){
	include("conexionBD.php");
	session_start();
	$nom=$_GET['nom'];
	$pas=$_GET['pas'];
	$esta=false;
	if(conectar()->connect_error){
		die('Error de conexion: '.conectar()->connect_error);
	}else{
		$sql="SELECT username FROM users WHERE username='".$nom."'&password='".$pas."'";
		$resul=mysqli_query(conectar(),$sql);
		if($resul){
			while($row=mysqli_fetch_array($resul)){
				if($nom==$row['username']&&$pas==$row['password']){
					$esta=true;
				}
			}
			if($esta=true){
				//echo "Existe el usuario!";
				$_SESSION['nom']=true;
				//header("Location:indice.php");
			}else{
				//echo "No existe el usuario!";
				$_SESSION['nom']=false;
				//header("Location:creauser.php");
			}
		}else{
			echo "No devuelve ningun resultado";
		}
	}
}
He quitado el alert porque me daba problemas y he añadido el password en el select porque me decía que no existía la variable
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

error fetch_array

Publicado por Charly (64 intervenciones) el 13/12/2017 11:47:21
He puesto un echo después de entrar en el else que hay conexión en cada línea y funciona hasta el while, pero ahí ya no entra:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if(conectar()->connect_error){
			die('Error de conexion: '.conectar()->connect_error);
		}else{
			echo "1";
			$sql="SELECT username FROM users WHERE username='".$nom."'&password='".$pas."'";
			echo "2";
			$resul=mysqli_query(conectar(),$sql);
			echo "3";
			if($resul){
				echo "4";//HASTA AQUI LEE BIEN PERO NO ENTRA AL WHILE
				while($row=mysqli_fetch_array($resul)){
					echo "5";
					if($nom==$row['username']&&$pas==$row['password']){
						echo "6";
						$esta=true;
					}
				}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar