Ir para conteúdo

Arquivado

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

marcelobbt

Exibir e contar dados com PDO

Recommended Posts

Estou tentando criar uma consulta ao banco de dados utilizando PDO, mas aparece sempre a mensagem abaixo:

 

Fatal error: Call to a member function fetchAll() on a non-object in ...

que se refere a linha:

$queryUsu = $bd->query("SELECT * FROM usuario WHERE email = $email")->fetchAll();

 

A seguir o código:

<?php
			//inclui classes necessárias
			include 'classes/Conta.class.php';
			
			$bd = new PDO("mysql:host=127.0.0.1;dbname=controlefinanceiro", "root", "qwer");
   			if(!$bd){
       			die('Erro ao criar a conexão');
   			}
   			
			//obtem e-mail da sessão
			$email = $_SESSION['email'];
			
			//obtem dados do usuario do BD
			$queryUsu = $bd->query("SELECT * FROM usuario WHERE email = $email")->fetchAll();
			if(!$queryUsu){
				print_r($bd->errorInfo());
			}
			foreach ($queryUsu as $sql){
				echo $sql['usuario'] . '<br />';
				echo $sql['idUsuario'] . '<br />';
				$idUsuario = $queryUsu['idUsuario'];
			}
			
			//obtem dados da conta do BD.
			$queryConta = $bd->query("SELECT * FROM conta WHERE Usuario_idUsuario = $idUsuario")->fetchAll();
			
			//conta número de registros
			$num = $queryConta->rowCount();
			
			
			//obtem dados da conta do BD
			for ($i=1; $i<=$num; $i++){
				$idConta[$i] = $queryConta['idConta'];
				$nomeConta[$i] = $queryConta['nomeConta'];	
				echo $nomeConta[$i]."<br>";
			}
			
			
		?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

No site da documentação do PHP está um pouco diferente, está assim:

 

$sql = 'SELECT name, color, calories FROM fruit ORDER BY name';
foreach ($conn->query($sql) as $row) {
print $row['name'] . "\t";
print $row['color'] . "\t";
print $row['calories'] . "\n";
}

 

Note que nesse exemplo não usa o fetchAll(); tente retirar ele.

 

Veja no link: http://php.net/manual/pt_BR/pdo.query.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado William.

 

Acho que era isso mesmo. Esse erro desapareceu.

 

Vou terminar de ajustar o resto do código aqui e vê se da tudo certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente foi resolvido o problema. Abaixo o código sem erros.

<?php
			//inclui classes necessárias
			include 'classes/Conta.class.php';
			
			$bd = new PDO("mysql:host=127.0.0.1;dbname=controlefinanceiro", "root", "qwer");
   			if(!$bd){
       			die('Erro ao criar a conexão');
   			}
   			
			//obtem e-mail da sessão
			$email = $_SESSION['email'];
			
			//obtem dados do usuario do BD
			$queryUsu = $bd->query("SELECT * FROM usuario WHERE email = '$email'");
			if(!$queryUsu){
				print_r($bd->errorInfo());
			}
			
			foreach ($queryUsu as $sql){
			//	echo $sql['nome'] . '<br />';
			//	echo $sql['idUsuario'] . '<br />';
				$idUsuario = $sql['idUsuario'];
			//	echo "id = ".$idUsuario;
			}
			
			//obtem dados da conta do BD.
			$queryConta = $bd->query("SELECT * FROM conta WHERE Usuario_idUsuario = $idUsuario");
			
			//conta número de registros
			$num = $queryConta->rowCount();
			
			$i=0;
			//obtem dados da conta do BD
			foreach ($queryConta as $sql2){
				$idConta[$i] = $sql2['idConta'];
				$nomeConta[$i] = $sql2['nomeConta'];	
				echo $nomeConta[$i]."<br>";
				$i++;
			}	
		?>

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.