Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro no mysqli_fetch_assoc() não consigo encontrar o motivo do erro.

Olá pessoal poderia me ajudar.

Estou criando um formulário de categorias para alterar praticando o curso. Porem esta apresentando esse erro e não consegui achar o motivo.

Abaixo o arquivo banco-categoria.php onde faço a busca no banco de dados.

<?php
require_once "conecta.php";
require_once "class/Categoria.php";

function listaCategorias($conexao) {

    $categorias = array();
    $query = "select * from categorias";
    $resultado = mysqli_query($conexao, $query);

    while ($categoria_array = mysqli_fetch_assoc($resultado)) {

        $categoria = new Categoria();
        $categoria->id = $categoria_array['id'];
        $categoria->nome = $categoria_array['nome'];

        array_push($categorias, $categoria);
    }

    return $categorias;
}

function buscaCategoria($conexao, $id) {

    $query = "select * from categoria where id = {$id}";
    $resultado = mysqli_query($conexao, $query);
    return mysqli_fetch_assoc($resultado);

}

E esse é o formulário que esta chamando a função.

<?php
require_once "cabecalho.php";
require_once "banco-categoria.php";

$id = $_GET['id'];
$categoria = buscaCategoria($conexao, $id);
$categorias = listaCategorias($conexao, $id);

?>

<h1>Alterando produto</h1>
<form action="altera-categoria.php" method="post">
    <input type="hidden" name="id" value="<?=$categoria->id?>">
    <table class="table">
      <tr>
          <td>Categoria</td>
          <td>
              <input class="form-control" type="text" name="nome" value="<?=$categoria->nome?>">
          </td>
      </tr>
      <tr>
          <td>
              <button class="btn btn-primary" type="submit">Alterar</button>
          </td>
      </tr>
    </table>
</form>

<?php include "rodape.php";?>

Abaixo a mensagem o Warning e não me trás a categoria do banco de dados. http://prntscr.com/i8univ

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\Alura\PHP e MySQL II Cookies\lojaNew\banco-categoria.php on line 27

3 respostas
solução!

Oi Allan,

No caso está dando erro pois a query está falhando e não retorna um "result" .

Provavelmente o motivo é porque o nome da tabela é categorias ao invés de categoria. Dá uma olhada na sua query da função buscaCategoria deveria estar assim

function buscaCategoria($conexao, $id) {

    $query = "select * from categorias where id = {$id}";
    $resultado = mysqli_query($conexao, $query);
    return mysqli_fetch_assoc($resultado);

}

Tente trocar e avise se funcionou! ;)

Opa, obrigado Luan por responder eu já tinha achado esse erro rs. Mesmo assim obrigado por ajudar. Não achei como tira o tópico do fórum.

Oi Allan,

Basta deixar como solucionado mesmo. Bom que fica aí para outros alunos.

Um abraço

Luan