Ir ao conteúdo

Posts recomendados

Postado

Olá,

 

estou desenvolvendo, a fins de estudar, um sistema de login procedural, porém, quando o sistema tem conexão com o banco de dados para validar o login, acontece o seguinte erro:

Fatal error: Uncaught TypeError: mysqli_fetch_array(): Argument #1 ($result) must be of type mysqli_result, bool given in C:\projetos\login_procedural\index.php:26 Stack trace: #0 C:\projetos\login_procedural\index.php(26): mysqli_fetch_array(false) #1 {main} thrown in C:\projetos\login_procedural\index.php on line 26

 

O código é esse:

 

<?php
//conexão
require_once 'db_connect.php';

//Sessão
session_start();

//Botão enviar
if(isset($_POST['btn-logar'])): 
    $erros = array();
    $login = mysqli_escape_string($connect, $_POST['login']);
    $pass = mysqli_escape_string($connect, $_POST['pass']);

    if(empty($login) or empty($pass)):
        $erros[] = '<li> O campo login/senha precisa preenchido </li>';
    else:
        $sql = "SELECT email FROM user WHERE email = '$login'";
        $resultado = mysqli_query($connect, $sql);

        if(mysqli_num_rows($resultado) > 0):
            
            $sql = "SELECT * FROM user WHERE email = '$login' AND pass = '$pass'";
            $resultado = mysqli_query($connect, $sql);
           
                if(!$resultado || mysqli_num_rows($resultado) == 1):
                    $dados = mysqli_fetch_array($resultado);
                    $_SESSION['Logado'] = true;
                    $_SESSION['id_user'] = $dados['id'];
                    header('Location: home.php');
                else:
                    $erros[] = '<li>Usuário e senha não conferem</li>';
                endif;

        else:
            $erros[] = 'Usuário inexistente';
        endif;
     endif;
endif;
?>

 

A linha 26 está no bloco abaixo:

if(!$resultado || mysqli_num_rows($resultado) == 1):
                    $dados = mysqli_fetch_array($resultado);
                    $_SESSION['Logado'] = true;
                    $_SESSION['id_user'] = $dados['id'];
                    header('Location: home.php');
                else:
                    $erros[] = '<li>Usuário e senha não conferem</li>';
                endif;

 

Especificadamente:
 $dados = mysqli_fetch_array($resultado);

 

Por que está retornando false?? 

Postado

@washalbano

 

eu fiz ele no arquivo .php da conexão:

 

<?php

//Conexão com o banco de dados
$servername = 'localhost';
$username = 'root';
$password = '';
$db_name = 'login_dinamic_css';

$connect = mysqli_connect($servername, $username, $password, $db_name);

if(mysqli_connect_error()):
    echo "Falha na conexão: ". mysqli_connect_error();
endif;

?>

 

Postado

Olá!
Me referi ao mysqli_error()
1) O mysqli_connect_error() verifica apenas erro de conexão.
2) O mysqli_error() vai verificar se houve alguma falha durante a execucação da query.
veja:
image.png.92babc9058ad6b42619f4f7e6c919482.png

 

image.png.004269434a1368f33c25af4e289a2f70.png

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!