Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro no acesso ao Banco de Dados

Os erros são os seguintes:

Warning: mysqli::__construct(): (HY000/1045): Access denied for user 'root@localhost'@'localhost' (using password: NO) in C:\xampp\htdocs\blog\config.php on line 3

Warning: mysqli::set_charset(): Couldn't fetch mysqli in C:\xampp\htdocs\blog\config.php on line 4 Banco conectado Fatal error: Uncaught ArgumentCountError: Too few arguments to function Artigo::construct(), 0 passed in C:\xampp\htdocs\blog\index.php on line 5 and exactly 1 expected in C:\xampp\htdocs\blog\Artigo.php:7 Stack trace: #0 C:\xampp\htdocs\blog\index.php(5): Artigo->construct() #1 {main} thrown in C:\xampp\htdocs\blog\Artigo.php on line 7

Estou fazendo o curso na rede da empresa. Não sei se o problema pode ser alguma restrição de acesso, ou erro no meu código mesmo.

Códigos abaixo:

config.php
<?php

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

if($mysql == TRUE) {
    echo "Banco conectado";
} else {
    echo "Erro na conexão";
}

?>
artigo.php
<?php

class Artigo
{
    private $mysql;

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

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

        return $artigos;
    }
}

?>
index.php
<?php

require 'config.php';
require_once 'Artigo.php';
$artigo = new Artigo();
$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="<?php echo $artigo['link'] ?>">
                    <?php echo $artigo['titulo'] ?>
                </a>
            </h2>
            <p>
                <?php echo $artigo['conteudo'] ?>
            </p>
        <?php endforeach; ?>
    </div>
</body>

</html>
1 resposta
solução!

O erro que informa é de acesso negado para o usuário 'root@localhost'@'localhost' , tente deixar da seguinte forma :

$mysql = new mysqli('localhost', 'root', '', 'blog');

Retire o @localhost do usuário