os dados não retorna, acho que é no foreach

Enviada por Anderson 
Anderson
os dados não retorna, acho que é no foreach
14 de March de 2017 às 02:39PM
<?php
require_once 'classes/cliente.php';

try
{
$conexao = new PDO("mysql:host=localhost;dbname=estudos","root","davi@nD3r5");

}catch(PDOExeption $e)
{
die("Não foi possivele stabelecer a conexão com o banco de dados. ERRO=" . $e->getCode());
}

$cliente = new Cliente($conexao);

foreach($cliente->listar() as $alvo)
{
$alvo['nome'] . "<br>";
}
Felipe
Re: os dados não retorna, acho que é no foreach
16 de March de 2017 às 02:42AM
Anderson, poderia ter postado a classe Cliente. Provavelmente o problema esteja no fetchAll.

Dica: Pesquise sobre DAO, POPO (Vulgo POJO do Java), etc...

Voltando ao que se refere, veja meu código:

[CODE]
<?php
try
{
$conexao = new PDO("mysql:host=?;dbname=?","?","?"); // RECONFIGURE ISTO COM SEU BANCO DE DADOS

}catch(PDOExeption $e)
{
die("Não foi possivele stabelecer a conexão com o banco de dados. ERRO=" . $e->getCode());
}

if( $cliente = new Cliente($conexao) )
{
foreach($cliente->listar() as $alvo)
{
echo $alvo['ClNome'] . "<br>";
}
}


class Cliente // APENAS COMO EXEMPLO - PARA COMPARAR SEU MÉTODO
{

private $conexao;

public function __construct($conexao)
{
$this -> conexao = $conexao;
return true;
}

public function listar()
{
try {

$sql = "SELECT * FROM `clientes` LIMIT 0,5;"; // COMANDO A SER EXECUTADO
/****************************
* CASO QUEIRA PASSAR ALGUM PARÂMETRO NA BUSCA, COMO POR EXEMPLO O NOME DO CLIENTE:
* QUERY: $sql = "SELECT * FROM `clientes` WHERE `ClNome` = :clnome;";
* EXECUÇÃO: $stmt -> execute(array(":clnome" => $nome_a_ser_buscado)); (DEVE SER PASSADO COMO ARGUMENTO)
*****************************/
$stmt = $this -> conexao -> prepare($sql);
$stmt -> execute();
$retorno = $stmt -> fetchAll(PDO::FETCH_ASSOC); // CONVERTE OS RESULTADOS EM ARRAY
if( $stmt -> rowCount() == 0 ) throw new Exception("Não foi encontrado nenhum cliente!"); // INTERROMPE A EXECUÇÃO CASO NÃO ENCONTRE ALGUM CLIENTE NA BUSCA
return $retorno;

} catch (Exception $e) {
die( $e -> getMessage() );
}
}
}
?>
[/CODE]

Não gosto muito dessa forma. Como propus, pesquise sobre DAO e POPO. Vai ajudar bastante. A final, POO foi feito para maior semelhança com a nossa realidade e ajudar no reaproveitamento do código!
PS: O comentário sobre passar o parâmetro na busca já te assegura contra sql injection. Pesquise também!

Att,
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.