1
resposta

Caso não seja um array

Boa tarde,

Caso os dados não sejam disponibilizados em uma lista, mas apenas um dado específico que quero mostrar, ainda devo usar a sintaxe do array ao chamar no HTML?

Por exemplo, a chamada atual fica . Mas se não fossem uma lista de matérias, mas apenas um dado específico em um campo, ainda usaria os colchetes? A lógica seria igual ou parecida com a apresentada em aula pra um array?

Tentei reproduzir o que foi ensinado em aula em um outro exemplo, e ficou assim:

class Quemsomos {

    private $mysql;

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

    public function exibirPerfis(){

        $result = $this->mysql->query('SELECT id, nome, descricao FROM tbperfis');


        $profile = $result->fetch_all(MYSQLI_ASSOC);

        return $profile;
    }

    public function encontrarPorId(string $id){

        $selectProfile = $this->mysql->prepare("SELECT id, nome, descricao FROM tbperfis WHERE id = ?");
        $selectProfile->bind_param('i', $id);
        $selectProfile->execute();
        $perfil = $selectProfile->get_result()->fetch_assoc();
        return $perfil;
    }
}

E a chamada assim:

<h3><?php echo $profile['nome'];?></h3>

Os arquivos são chamados para o index da seguinte maneira:

<?php

require 'dbconn.php';
include 'src/Qmsmdb.php';
$perfil = new Quemsomos($mysql);
$profile = $perfil->exibirPerfis();

?>

Porém está acontecendo o erro: "Notice: Undefined index: nome in C:\xampp\htdocs\Interacao-Paginas\quem-somos.php on line 85" (A chamada $profile['nome'] está na linha 85).

1 resposta

Nesta função você está recebendo uma 'string $id', porém abaixo você passa um 'bind_param' e verifica se há uma parâmetro como inteiro... E na primeira linha da função você precisa passar o id na query... Ficando assim:

public function encontrarPorId(int $id){

        $selectProfile = $this->mysql->prepare("SELECT id, nome, descricao FROM tbperfis WHERE id = {$id}");
        $selectProfile->bind_param('i', $id);
        $selectProfile->execute();
        $perfil = $selectProfile->get_result()->fetch_assoc();
        return $perfil;
    }