Ir para conteúdo

POWERED BY:

Arquivado

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

gilvaju

[Resolvido] Classe para conexão no banco de dados

Recommended Posts

Boa tarde galera,

 

Estou criando a seguinte classe para conexão no banco de dados. Estou começando a programar orientado a objetos no php estou enfrentando o seguinte problema:

 

Quando no meu código direto, escrevo:

 

$mysqli - new mysqli();

$resultado = $mysqli->query($query);

$dados = $resultado->fetch_assoc();

 

echo $dados["MUN_CODIGO"];

 

E isto funciona.

 

Nessa classe não estou conseguindo atribuir o $mysqli->query($query) a $resultado. O que estou fazendo errado?

 

 

class conexao {

   // Define configuração de conexão com o banco de dados
   var $servidor = "localhost";
   var $usuario = "cacex";
   var $senha = "c4c3x";
   var $bd = "teste";

   var $query;
   var $mysqli;
   var $resultado;

   function conexao($query) {
       $this->query = $query;
       $this->mysqli = new mysqli($this->servidor, $this->usuario, $this->senha, $this->bd);
       $this->resultado = $this->mysqli->query($this->query);
       }

   function dados() {
       if (!$this->resultado) {
           echo "Conexão falhou!<br />";
       } else {
           echo "Conexão bem sucedida!";
       }
   }
}

 

Quando uso $conexao = new conexao("SELECT * FROM TB_MUNICIPIOS");

$conexao->dados();

 

Ela sempre retorna "Conexão falhou!";

Compartilhar este post


Link para o post
Compartilhar em outros sites

seu método está confuso.

Fazendo coisas demais.

 

veja sobre o return, e separe as rotinas.

 

Conectar e executar uma query, é responsabilidade demais, para um único método.

estude sobre os modificadores de acesso public|protected|private [não use var]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual parte você não entendeu ?

 

não rola de eu escrever tudo de novo.. preciso saber qual ponto exatamente está a tua dúvida.

 

olhe esta class do Fabyo:

http://forum.imasters.com.br/topic/353635-classe-mysqli-mais-uma/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual parte você não entendeu ?

 

não rola de eu escrever tudo de novo.. preciso saber qual ponto exatamente está a tua dúvida.

 

olhe esta class do Fabyo:

http://forum.imasters.com.br/topic/353635-classe-mysqli-mais-uma/

 

Bem cara, vi o link e confesso que me perdi um pouco, estou querendo fazer esta classe para estudar e praticar, não gostaria de pegar uma pronta.

 

A minha dúvida é justamente pq não consigo atribuir o $this->mysqli($query) a $this-resultado

 

$this->resultado = $this->mysqli->query($query);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Okay, então você precisa descobrir, o porque esta falhando:

 

troca:

$this->resultado = $this->mysqli->query($this->query);

 

por:

$this->resultado = $this->mysqli->query($this->query);

//as 2 linhas abaixo são para debug, poste o retorno delas.
var_dump( $this->resultado );
echo $this->mysqli->error;

 

e mostre como você esta tentando usar a tua class.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, muito obrigado, na verdade o erro estava que tinha trocado o nome da tabela.

Vou estar mais sobre esse var_dump

 

Agora seguindo o que você falou sobre muita coisa para uma método só, cheguei a este código:

 

class conexao {

   // Define configuração de conexão com o banco de dados
   var $servidor = "localhost";
   var $usuario = "cacex";
   var $senha = "c4c3x";
   var $bd = "teste";

   var $query;
   var $mysqli;
   var $resultado;

   function conexao() {
       $this->mysqli = new mysqli($this->servidor, $this->usuario, $this->senha, $this->bd);
       return $this->mysqli;
       }

   function executaQuery($query) {
       $this->query = $query;  
       $this->resultado = $this->mysqli->query($this->query);
       return $this->resultado;
   }

   function dados() {
       if (!$this->resultado) {
           echo "Conexão falhou!<br />";
       } else {
           echo "Conexão bem sucedida!";
       }
   }

}

 

Como eu estava utilizando:

 

$conexao = new conexao;
$conexao->executaQuery("SELECT * FROM TB_USUARIOS");
$conexao->dados();

Compartilhar este post


Link para o post
Compartilhar em outros sites
use o Responder Azul respondery.png

ou a 'Resposta Rápida'.

 

 

Okay, a falha deste código, é a mesma do outro, apesar de ter melhorado em relação a 'fazer muita coisa'

 

erro: você está reabrindo a conexão a cada query que manda executar.

Se você executar 3 queries, vai abrir a conexão 3 vezes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, esta de reabrir a conexão não entendi, ele não só é aberta quando instancio a classe conexao? Realmente estou voando aqui, onde posso ler mais sobre isto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falha minha, desculpe.

 

Achei que você estava chamando o metodo conexao() dentro do query(), mas nao esta.

Esqueça oque eu disse, desculpe.

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.