2
respostas

Erro no metodo que retorna um artigo especifico

Bom dia,

O meu método para exibir um artigo especifico está retornando null, mas não estou conseguindo entender o motivo, pode me ajudar?

a mensagem de erro: TypeError: Return value of Artigos::exibirArtigoEspecifico() must be of the type array, null returned in C:\wamp64\www\WebApp-Php e MYSQL-Alura\src\classes\Artigos.php on line 30

classe Artigo:
<?php

class Artigos
{
        private $mysql;

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

        public function exibirTodosArtigos(): array
        {
                $resultado = $this->mysql->query('SELECT * FROM artigos');

                $artigos = $resultado->fetch_all(MYSQLI_ASSOC);

                return $artigos;
        }

        public function exibirArtigoEspecifico(string $id): array
        {
                $artigoSelecionado = $this->mysql->prepare('SELECT * FROM artigos WHERE id = ?');

                $artigoSelecionado->bind_param('s', $id);

                $artigoSelecionado->execute();
                $artigo = $artigoSelecionado->get_result()->fetch_assoc();

                return $artigo;
        }
}

aqui na pagina que cada artigo deve aparecer:

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

<?php

require_once 'src/conexaoBD.php';
include_once 'src/classes/Artigos.php';

$ListaArtigos = new Artigos($mysql);
$artigo = $ListaArtigos->exibirArtigoEspecifico($_GET['id']);

?>

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

<body>
    <div id="container">

        <h1>

        </h1>
        <p>

        </p>
        <div>
            <a class="botao botao-block" href="index.php">Voltar</a>
        </div>
    </div>
</body>

</html>

e o index

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

<?php

require 'src/conexaoBD.php';
include_once 'src/classes/Artigos.php';

$listaArtigos = new Artigos($mysql);
$artigos = $listaArtigos->exibirTodosArtigos();

?>

<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="artigos.php?id="<?php echo $artigo['id']; ?>>
                <?php echo $artigo['titulo'];?>
            </a>
        </h2>
        <p>
          <?php echo $artigo['conteudo'];?>
        </p>

<?php } // fim foreach ?>

    </div>
</body>

</html>
2 respostas

Oi Carolina,

O resultado null está vindo da consulta MySQL que estamos gerando, um dos motivos dele retornar null é se a consulta realmente não retorna um dado ou se os parâmetros (os sinais de ? que vinculamos com a função bind_param) não estão sendo atribuídos como deveriam.

Essa é a página index.php né? posta a página index.php que está dentro da pasta admin também para eu dar uma olhada que acredito que possa ser algo nela.

Muito obrigada, consegui descobrir o que era, o erro estava no fechamento das aspas no arquivo index na tag a.