Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera. Criei a classe abaixo. Muito simples, como vocês podem ver.
<?
class SQL
{
//Variável que guarda os dados da conexão
private $conn;
/*
Conecta com o banco de dados
*/
public function conecta()
{
$server = "localhost";
$user = "root";
$pass = "";
$bd = "banco_teste";
$this->conn = mysql_connect($server,$user,$pass);
mysql_select_db($bd);
return true;
}
public function executa($sql)
{
$this->conecta();
return $resultado = mysql_query($sql);
$this->desconecta();
}
public function consulta($sql)
{
$result = $this->executa($sql);
return $linha = mysql_fetch_array($result);
}
public function apaga($tabela, $id)
{
$this->executa("delete from " . $tabela . " where id='" . $id . "'");
return true;
$this->desconecta();
}
public function desconecta()
{
mysql_close($this->conn);
}
}
?>Acontece que, em busca da portabilidade, eu quero evitar chamar funções mysql dentro do código, pois, se eu precisar mudar de banco de dados, eu facilmente alteraria só a classe, ou melhor ainda, eu criaria várias classes, para vários bancos de dados diferentes, mas com nomes dos métodos padronizados, e que funcionassem de modo idêntico em todas elas.
Portanto, ao invés de usar a executa(), e chamá-la assim:
$db = new SQL;
$result = $db->executa("select * from movimento");
while($linha = mysql_fetch_array($result))
{
//códigossss
}
Criei a função consulta() para ser usada assim, ou seja, direto no while:
$db = new SQL;
while($linha = $db->consulta("select * from movimento"))
{
//códigossss
}
Se vocês observarem, lá dentro da classe, a função consulta() executa o código sql, joga dentro do mysql_fetch_array e me recorda o resultado do mysql_fetch_array, ou pelo menos, deveria me retornar.
Acontece que está dando um erro de loop infinito, ou seja, ele só me retorna o primeiro resultado, por exemplo, o resultado com ID=1, e fica repetindo até comer toda a memória.
Porque isso acontece?
Onde eu estou errando?
Como alterar, de forma que funcione como proposto?
Valeu
Carregando comentários...