"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que estou recebendo o erro "Tentando obter propriedade de não objeto" ao acessar os resultados do banco de dados?

Por que estou recebendo o erro "Tentando obter propriedade de não objeto" ao acessar os resultados do banco de dados?

Publicado em 2024-11-18
Navegar:159

Why am I getting the

Tentando acessar propriedade de não-objeto

Ao tentar recuperar dados de um banco de dados, você encontra o erro "Tentando obter propriedade de não-objeto." Este erro ocorre quando você tenta acessar uma propriedade de um objeto nulo ou inexistente.

Em seu cenário específico, você tem o seguinte código em sua página de controle:

$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);
$sidemenus = mysql_fetch_object($results);

E na sua página de visualização:

foreach ($sidemenus as $sidemenu): 
  echo $sidemenu->mname."<br />";
endforeach; 

O erro se origina porque mysql_fetch_object() retorna um objeto, não uma matriz de objetos. Portanto, na página Exibir, você tenta iterar sobre um objeto não iterável, o que leva ao erro.

Solução:

Para resolver o problema, você deve:

  • Converter o resultado em um array:
$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);

$sidemenus = array();
while ($sidemenu = mysql_fetch_object($results)) {
    $sidemenus[] = $sidemenu;
}

Isso converterá os resultados em uma matriz de objetos, que você poderá iterar em sua página Visualizar.

  • Use PDO:

PDO oferece uma forma mais moderna e eficiente de interagir com bancos de dados. PDOStatement::fetchAll(PDO::FETCH_OBJ) retorna um array de objetos, semelhante à funcionalidade que você esperava de mysql_fetch_object().

$stmt = $con->prepare("SELECT * FROM sidemenu WHERE `menu_id` = :menu_id ORDER BY `id` ASC LIMIT 1");
$stmt->bindParam(':menu_id', $menu);
$stmt->execute();

$sidemenus = $stmt->fetchAll(PDO::FETCH_OBJ);

Ao utilizar qualquer uma dessas soluções, você pode recuperar os dados do banco de dados e evitar o erro "Tentando obter propriedade de não objeto. "

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3