When I prepare this query, I want it to validate if the user exists or not, and for that I use "mysqli_num_rows ()". The problem is that if I do it without preparing the query, putting the query to hair (it is commented in the code), it works. But preparing it I'm not sure how it is.
The error that gives me is this:
Warning: mysqli_num_rows () expects parameter 1 to be mysqli_result, object given in C: \ wamp \ www \ server ... \ validation.php on line 36
conexion_bd.php code:
<?php
session_start();
$db_conexion="localhost";
$db_usuario="root";
$db_pass="";
$db_nombre="ciclos";
//Conexión con mysqli procedural
$conexion=mysqli_connect($db_conexion, $db_usuario, $db_pass, $db_nombre);
mysqli_set_charset($conexion, "utf8");
if(!$conexion) {
die("Error de conexión: " . mysqli_connect_error());
}
?>
And the code:
<?php
require_once("conexion_bd.php");
//Validar usuario con mysqli procedural
if(isset($_POST["entrar"])){
$_SESSION["usuario"]=$_POST["usuario_entrar"];
$_SESSION["contra"]=$_POST["contra_entrar"];
$usuario_entrar=$_SESSION["usuario"];
$contra_entrar=$_SESSION["contra"];
if($usuario_entrar=="" || $contra_entrar=="") {
echo("<script type='text/javascript'>alert('Erro.')</script>");
}else{
//$resultado_entrar1=mysqli_query($conexion, "SELECT * FROM usuarios WHERE usuario='$usuario_entrar' AND contrasenha='$contra_entrar'");
$resultado_entrar=mysqli_prepare($conexion, "SELECT usuario, contrasenha FROM usuarios WHERE usuario=? AND contrasenha=?");
mysqli_stmt_bind_param($resultado_entrar, "ss", $usuario_entrar, $contra_entrar);
mysqli_execute($resultado_entrar);
mysqli_stmt_bind_result($resultado_entrar, $usuario_entrar, $contra_entrar);
//mysqli_close($resultado_entrar);
//mysqli_close($conexion);
if ($resultado_entrar===false){
printf("Error: %s\n", mysqli_error($conexion));
die();
}else{
$verificacion_entrar=mysqli_num_rows($resultado_entrar);
if($verificacion_entrar>0){
header('Location: contenido.php');
}else{
echo("Usuario o contraseña incorrectos.");
}
}
}
}
?>