2
respostas

Uncaught Error: Call to a member function fetchAll()

Ao tentar criar o método carregar na classe Conexão, conforme explicado na aula 03 - "Carregando a categora" estou recebendo o erro "Fatal error: Uncaught Error: Call to a member function fetchAll() on bool in C:\Informatica\PHP_com_PDO\classes\Categoria.php:26 Stack trace: #0 C:\Informatica\PHP_com_PDO\categorias-editar.php(6): Categoria->carregar() #1 {main} thrown in C:\Informatica\PHP_com_PDO\classes\Categoria.php on line 26"

<?php

use classes\Conexao;

require_once 'classes/Conexao.php';

class Categoria
{
    public $id;
    public $nome;

    public function listar() 
    {
        $query = "SELECT id, nome FROM categorias";
        $conexao = Conexao::pegarConexao();
        $resultado = $conexao->query($query); #retorna um PHP statement com várias informações
        $lista = $resultado->fetchAll();
        return $lista;
    }

    public function carregar() 
    {
        $query = "SELECT id,nome FROM categorias WHERE id = '".$this->id;
        $conexao = Conexao::pegarConexao();
        $resultado = $conexao->query($query);
        $lista = $resultado->fetchAll();
        foreach ($lista as $linha){
            $this->nome = $linha['nome'];
        }
    }

    public function inserir() 
    {
        $query = "INSERT INTO categorias (nome) VALUES ('". $this->nome . "')";
        $conexao = Conexao::pegarConexao();
        $conexao->exec($query); # Apenas executa uma informação, usados em INSERTS, UPDATEs
    }

    public function atualizar() {
        $query = "UPDATE categorias SET nome = '".$this->nome."' WHERE id = '".$this->id;
        $conexao = Conexao::pegarConexao();
        $conexao->exec($query);
    }

}
2 respostas

Olá Fernando, acredito que o problema seja apenas a aspa extra no seu sql.

Remove essa aspa que tem na query do seu método carregar: WHERE id = [']".$this->id;

Deixa assim:

$query = "SELECT id,nome FROM categorias WHERE id = ".$this->id;

Valeu Lucas.

Depois que revisei o código vi essa aspa extra mesmo.

Abraço!