Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Micilini Roll

Fatal error: Cannot use object of type stdClass as array in...

Recommended Posts

aqui esta o comando que da o erro:

 

<?
$categorias = $pdo->prepare("SELECT * FROM f_categorias");
$categorias->execute();
while ($objx=$categorias->fetch(PDO::FETCH_OBJ)){
$nome_categoria = $objx['nome'];
$id_categoria = $objx['id'];


?>
<div id="titulo" style="
font-size: 14px;
display: block;
color:#C60;
font-weight: bold;
text-transform: uppercase;
line-height: 34px;
height: 40px;
padding-top: 15px;">
<? echo $nome_categoria ?>
</div>
<div id="separador" style="background:#06F; width:100%; height:4px;">
</div>
<div id="links" style="padding-top:15px;">
<?
$sub_categorias = $pdo->prepare("SELECT * FROM f_sub_categorias WHERE id_categoria = $id_categoria");
$sub_categorias->execute();
while ($obj=$sub_categorias->fetch(PDO::FETCH_OBJ)){
$nome_sub_categoria = $objw['nome'];
$id_sub_categoria = $objw['id'];
?>
<a style="color:#000000" href="busca.php?w=<? echo $id_sub_categoria ?>"><? echo $nome_sub_categoria ?></a>
<hr style="opacity:0.70;" />
<?
}
?>
</div>
<?
}
?>

 

 

ele da o erro na linha 227,a linha 227 é esta aqui:

 

$nome_categoria = $objx['nome'];

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando vc usa FETCH_OBJ

vc deve chamar como um objeto não um array

fetch(PDO::FETCH_OBJ)
$objx->nome;

 

se vc quer um array mude para PDO::FETCH_ASSOC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você utilizou:

$categorias->fetch(PDO::FETCH_OBJ)


Você trouxe a tupla como um objeto, e não um array associativo. O objeto é uma standard class (stdClass).

PDO::FETCH_OBJ: returns an anonymous object with property names that correspond to the column names returned in your result set



Logo, trate-o como um objeto. O correto seria:

$objx->nome;



Leia sobre os parâmetros para o fetch.
PDOStatement::fetch

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um pequeno parêntese ao que o shini disse.

 

Um objeto não está restrito à notação de objetos para ser utilizado. Por implementar a interface ArrayAccess numa classe você permite aos objetos dessa classe serem manipulados através da notação de arrays.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.