0
respostas

Uncaught Error : Call to a member function fetch all() on bool in ...

Prezados,

Acabei perdendo meus códigos das aulas anteriores deste curso, então estou usando o código da aula anterior disponibilizado no GitHub, alterando apenas o arquivo config.php para conexão com meu DB

Estou diante do seguinte erro:


[Thu Jul 22 10:40:07 2021] 127.0.0.1:44354 [500]: GET / - Uncaught Error: Call to a member function fetch_all() on bool in /home/rrmcastro/Cursos/Backend/10-alura-php-e-mysql-introducao-a-uma-webapp/3.2-formulario-para-adicionar-um-artigo/src/Artigo.php:16 Stack trace:

#0 /home/rrmcastro/Cursos/Backend/10-alura-php-e-mysql-introducao-a-uma-webapp/3.2-formulario-para-adicionar-um-artigo/index.php(7): Artigo->exibirTodos()

#1 {main} thrown in /home/rrmcastro/Cursos/Backend/10-alura-php-e-mysql-introducao-a-uma-webapp/3.2-formulario-para-adicionar-um-artigo/src/Artigo.php on line 16 [Thu Jul 22 10:40:07 2021] 127.0.0.1:44354 Closing


index.php

<?php

require 'config.php';

include 'src/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>

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;
    }

    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 'src/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>

</html>

Agradeço desde já.