MySQLi + num_rows after a table query

1

This is to be a login system with access levels that I am trying to do, but this is giving an error.

What am I missing?

I've tried everything and nothing. I have already looked at the PHP documentation and nothing.

I wanted it to be object-oriented Mysqli, not PDO.

<?php

// inclusao do arquivo de conexao ao banco de dados
include("conexao.php");

// se existir o clicar do botao logar do formulario
if(isset($_POST['logar'])){

    // se existir o login do usuario digitado
    if(isset($_POST['loginUsuario'])){

        // verificação de anti injeção de SQL do campo login do usuario
        $loginUsuario = $conexao->escape_string($_POST['loginUsuario']);

        //se existir a senha do usuario digitado
        if(isset($_POST['senhaUsuario'])){

            // verificação de anti injeção de SQL do campo senha do usuario
            $senhaUsuario = $conexao->escape_string($_POST['senhaUsuario']);

            $consulta = "SELECT * FROM usuarios WHERE loginUsuario = $loginUsuario AND senhaUsuario = $senhaUsuario";
            $resultado = $conexao->query($consulta);
            $linha = $conexao->num_rows($resultado);

            echo $linha;// Aqui queria que dizesse que existe o registro pelo login do usuario
                        // Eu digitasse login: admin e senha: 123, aparecesse 1, porque tem dentro do registro
                        // E se digitasse qualquer outra coisa aparecesse 0, porque não tem dentro do registro

        }// isset do campo senha do usuario
    }// isset do campo login do usuario
}//isset botão logar

?>
    
asked by anonymous 11.12.2017 / 13:58

3 answers

2
<?php
    ini_set('display_errors', true); error_reporting(E_ALL);

    // inclusao do arquivo de conexao ao banco de dados
    include("conexao.php");

    // se existir o clicar do botao logar do formulario
    if(isset($_POST['logar'])){

        // se existir o login do usuario digitado
        if(isset($_POST['loginUsuario'])){

            // verificação de anti injeção de SQL do campo login do usuario
            $loginUsuario = $conexao->escape_string($_POST['loginUsuario']);

            //se existir a senha do usuario digitado
            if(isset($_POST['senhaUsuario'])){

                // verificação de anti injeção de SQL do campo senha do usuario
                $senhaUsuario = $conexao->escape_string($_POST['senhaUsuario']);

                //************** correção foi aqui ************************* 
                $consulta = $conexao->query("SELECT * FROM usuarios WHERE loginUsuario='$loginUsuario' AND senhaUsuario = '$senhaUsuario'");
                $linha = $consulta->num_rows;

                echo $linha;

            }// isset do campo senha do usuario
        }// isset do campo login do usuario
    }//isset botão logar

    // inclusão do arquivo cabeçario da pagina HTML5
    include("header.php");    
?>
 <center>
    <h1>Entre para logar</h1>
 <!-- formulario de login e senha do usuario -->
 <form action="login.php" method="post">
    <input type="text" name="loginUsuario" maxlength="15" size="15" placeholder="Usuario">
    <input type="password" name="senhaUsuario" maxlength="15" size="15" placeholder="********">
    <input type="submit" name="logar" value="Logar">    
 </form>
</center>

<?php
    // inclusão do arquivo rodape do HTML5
    include("footer.php");
    //fechar banco de dados 
    $conexao->close();
 ?>
  

NOTE: Involve query variables with single quotation marks

     

WHERE login='$loginUsuario' AND senha = '$senha'"

num_rows - Get the number of rows in a result

First case

$consulta = $conexao->query("SELECT * FROM usuarios WHERE loginUsuario='$loginUsuario' AND senhaUsuario = '$senhaUsuario'");
//numero de linhas afetadas
$linha = $consulta->num_rows;

or

$linha = mysqli_num_rows($consulta);

Second case

as response from [] rray and involving query variables with single quotation marks.

$consulta = "SELECT * FROM usuarios WHERE loginUsuario='$loginUsuario' AND senhaUsuario = '$senhaUsuario'";
$resultado = $conexao->query($consulta);
$linha = $resultado->num_rows;
    
11.12.2017 / 17:42
0

Who has the return information of query rows is resource and not the connection.

Change:

$linha = $conexao->num_rows($resultado);

To:

$linha = $resultado->num_rows;
    
11.12.2017 / 14:24
0

For the apprehended question I will be disabling the whole code via text in the link

Code

<?php
    ini_set('display_errors', true); error_reporting(E_ALL);

    // inclusao do arquivo de conexao ao banco de dados
    include("conexao.php");

    // se existir o clicar do botao logar do formulario
    if(isset($_POST['logar'])){

        // se existir o login do usuario digitado
        if(isset($_POST['loginUsuario'])){

            // verificação de anti injeção de SQL do campo login do usuario
            $loginUsuario = $conexao->escape_string($_POST['loginUsuario']);

            //se existir a senha do usuario digitado
            if(isset($_POST['senhaUsuario'])){

                // verificação de anti injeção de SQL do campo senha do usuario
                $senhaUsuario = $conexao->escape_string($_POST['senhaUsuario']);

                //************** correção foi aqui ************************* 
                $consulta = $conexao->query("SELECT * FROM usuarios WHERE loginUsuario='$loginUsuario' AND senhaUsuario = '$senhaUsuario'");
                $linha = $consulta->num_rows;

                echo $linha;

            }// isset do campo senha do usuario
        }// isset do campo login do usuario
    }//isset botão logar

    // inclusão do arquivo cabeçario da pagina HTML5
    include("header.php");    
?>
 <center>
    <h1>Entre para logar</h1>
 <!-- formulario de login e senha do usuario -->
 <form action="login.php" method="post">
    <input type="text" name="loginUsuario" maxlength="15" size="15" placeholder="Usuario">
    <input type="password" name="senhaUsuario" maxlength="15" size="15" placeholder="********">
    <input type="submit" name="logar" value="Logar">    
 </form>
</center>

<?php
    // inclusão do arquivo rodape do HTML5
    include("footer.php");
    //fechar banco de dados 
    $conexao->close();
 ?>
    
12.12.2017 / 00:21