POO função consultar banco - está gerando ciclo infinito -

04/05/2013

0

PHP

Olá,
estou começando a programar php orientado a objeto, e ao tentar criar um método que faz uma consulta no banco,
me deparei com o seguinte problema:
Está sendo retornado um ciclo infinito do primeiro resultado da consulta.
Exemplo: No banco eu possuo dentre outros registros dois nome assim -> xxxx | xxxxx| jonata | xxxxx | xxxxx
xxxx | xxxxx| jorge | xxxxx | xxxxx

E o que está sendo retornado é o seguinte:
jonata
jonata
jonata
jonata
...(e aqui vai pra mais de 300)

Meu método é o seguinte:
<?php
/**
* Classe BancoAcoes
* Refere-se às ações que são feitas no Banco de Dados
* como: SELECT, INSERT, UPDATE e etc.
*/
class BancoAcoes {
/**
$conexao$conexao$conexao* Metodo para realizar consultas (SELECT), com o uso dos parâmetros:
* campo - String
* tabela - String
* where - String
* conexao - Variável que contém a conexão com o Banco
*
* No parâmetro 'where' colocar a condição inteira.
* Exemplo: 'WHERE codigo_pessoas = codigo_cliente AND nome = joao'
* @autor Jonata Joaquim de Miranda
* @access public
*/
public function getConsulta($campo, $tabela, $where, $conexao)
{
$sql = " SELECT ".$campo." FROM ".$tabela." ".$where;
$query = mysql_query($sql, $conexao);
return ($array = mysql_fetch_array($query));
}
}
?>

E está sendo usado da seguinte maneira:
<?php
$banco = new BancoAcoes();
$array = $banco->getConsulta("*", "pessoas", "", $conexao);
$obj = $array;
do {
echo $array['nome']."<br />";
} while ($obj) ;
mysql_close($conexao);
?>


Desde já agradeço.
Jonata Miranda

Jonata Miranda

Responder

Posts

04/05/2013

Jonata Miranda

Olá galera,
após postar minha dúvida aqui, continuei na busca pela solução.
Após algumas alterações no código, cheguei a uma solução.
Estou postando:

Método:
<?php
/**
* Classe BancoAcoes
* Refere-se às ações que são feitas no Banco de Dados
* como: SELECT, INSERT, UPDATE e etc.
*/
class BancoAcoes {
/**
* Metodo para realizar consultas (SELECT), com o uso dos parâmetros:
* campo - String
* tabela - String
* where - String
* conexao - Variável que contém a conexão com o Banco
*
* No parâmetro 'where' colocar a condição inteira.
* Exemplo: 'WHERE codigo_pessoas = codigo_cliente AND nome = joao'
* @autor Jonata Joaquim de Miranda
* @access public
*/
public function getConsulta($campo, $tabela, $where, $conexao)
{
$sql = " SELECT ".$campo." FROM ".$tabela." ".$where;
$query = mysql_query($sql, $conexao);
$array = mysql_fetch_array($query);
$returnArray;
$i = 0;
do {
if ($campo != "*") {
$returnArray[$i] = $array[$campo];
$i++;
} else if ($campo == "*"){
$returnArray[$i] = $array;
$i++;
}
} while($array = mysql_fetch_array($query));
return $returnArray;
}
}
?>


Uso do metodo na página:
<?php
$banco = new BancoAcoes();
$array = $banco->getConsulta("*", "pessoas", "", $conexao);
print_r($array);
mysql_close($
?>


Bom. Assim eu aparentemente atingi meu objetivo.
Mas sintam-se a vontade para usar ou analisar e fazer sugestões e/ou correções.
Obrigado.
:D
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar