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>