1
resposta

FATAL ERROR: Uncaught mysqli_sql_exception

Já tentei de tudo, também já li os posts antigos, mas não consegui solucionar esse FATAL ERROR. Fiz conforme foi especificado nas aulas e no Github. Peço ajuda aos colegas e colaboradores.

Fatal error: Uncaught mysqli_sql_exception: Access denied for user 'root'@'localhost' (using password: NO) in C:\xampp\htdocs\blog\config.php:3 Stack trace: #0 C:\xampp\htdocs\blog\config.php(3): mysqli->__construct('localhost', 'root', '', 'blog') #1 C:\xampp\htdocs\blog\index.php(3): require('C:\xampp\htdocs...') #2 {main} thrown in C:\xampp\htdocs\blog\config.php on line 3

Consigo acessar o banco de dados normalmente (localhost/phpmyadmin) .

Aula de referência: 3. Adicionando um artigo no banco - aulas 3 e 4

Segue o meu código:

// Pasta admin - adicionar-artigo.php
<?php
require '../config.php';
require '../codigo-fonte/Artigo.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $artigo = new Artigo($mysql);
    $artigo->adicionar($_POST['titulo'], $_POST['conteudo']);

    header('Location: /blog/admin/index.html');
    die();

}

?>

<!DOCTYPE html>
<html lang="pt-br">

<head>
    <link rel="stylesheet" type="text/css" href="../style.css">
    <meta charset="UTF-8">
    <title>Adicionar Artigo</title>
</head>

<body>
    <div id="container">
        <h1>Adicionar Artigo</h1>
        <form action="adicionar-artigo.php" method="post">
            <p>
                <label for="">Digite o título do artigo</label>
                <input class="campo-form" type="text" name="titulo" id="titulo" />
            </p>
            <p>
                <label for="">Digite o conteúdo do artigo</label>
                <textarea class="campo-form" type="text" name="conteudo" id="conteudo"></textarea>
            </p>
            <p>
                <button class="botao">Criar Artigo</button>
            </p>
        </form>
    </div>
</body>

</html>
//Pasta codigo-fonte(src) - Artigo.php
<?php

class Artigo
{
    private $mysql;

    public function __construct(mysqli $mysql)
    {
            $this->mysql = $mysql;
    }

    public function adicionar(string $titulo, string $conteudo): void
    {
        $insereArtigo = $this->mysql->prepare('INSERT INTO artigos (titulo, conteudo) VALUES(?,?);');
        $insereArtigo->bind_param('ss', $titulo, $conteudo);
        $insereArtigo->execute();
    }


    public function exibirTodos(): array
    {
        $resultado = $this->mysql->query('SELECT id, titulo, conteudo FROM artigos');
        $artigos = $resultado->fetch_all(MYSQLI_ASSOC);

        return $artigos;
    }

    public function encontrarPorId(string $id): array
    {
        $selecionaArtigo = $this->mysql->prepare('SELECT id, titulo, conteudo FROM artigos WHERE id = ?');
        $selecionaArtigo->bind_param('s', $id);
        $selecionaArtigo->execute();
        $artigo = $selecionaArtigo->get_result()->fetch_assoc();
        return $artigo;

    }

}
//artigo.php
<?php

require 'config.php';
require 'codigo-fonte/Artigo.php';

$obj_artigo = new Artigo ($mysql);
$artigo = $obj_artigo->encontrarPorId($_GET['id']);

?>
<!DOCTYPE html>
<html lang="pt-br">

<head>
    <title>Meu Blog</title>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
    <div id="container">
        <h1>
            <?php echo $artigo['titulo']; ?>
        </h1>
        <p>
            <?php echo $artigo['conteudo']; ?>   
        </p>
        <div>
            <a class="botao botao-block" href="index.php">Voltar</a>
        </div>
    </div>
</body>
//config.php
<?php

$mysql = new mysqli('localhost','root', '', 'blog');
$mysql->set_charset('utf8');

if ($mysql == FALSE)  {
    echo "ERRO NA CONEXÃO AO BD";
}
//index.php
<?php

require 'config.php';

include 'codigo-fonte/Artigo.php';
$artigo = new Artigo($mysql);
$artigos = $artigo->exibirTodos();

?>
<!DOCTYPE html>
<html lang="pt-br">

<head>
    <title>Meu Blog</title>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
    <div id="container">
        <h1>Meu Blog</h1>
        <?php foreach ($artigos as $artigo) : ?>
        <h2>
        <a href="artigo.php?id=<?php echo $artigo['id']; ?>">
                <?php echo $artigo['titulo']; ?>
            </a>
        </h2>
        <p>
            <?php echo $artigo['conteudo']; ?>
        </p>
        <?php endforeach; ?>
    </div>
</body>

</html>
1 resposta

Olá, tudo bem?

Pelo erro retornado, diz que o acesso foi negado, isso pode ser credenciais incorretas, você poderia verificar se suas credenciais estão corretas?

Fico no aguardo, abraços :D