gilvaju 0 Denunciar post Postado Março 21, 2011 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
William Bruno 1501 Denunciar post Postado Março 21, 2011 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
gilvaju 0 Denunciar post Postado Março 21, 2011 Cara, não entendi direito o que você quer dizer, pode exemplificar? agradeço! Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Março 21, 2011 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
gilvaju 0 Denunciar post Postado Março 21, 2011 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
William Bruno 1501 Denunciar post Postado Março 21, 2011 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
gilvaju 0 Denunciar post Postado Março 21, 2011 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
William Bruno 1501 Denunciar post Postado Março 21, 2011 use o Responder Azul 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
gilvaju 0 Denunciar post Postado Março 21, 2011 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
William Bruno 1501 Denunciar post Postado Março 21, 2011 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
gilvaju 0 Denunciar post Postado Março 21, 2011 beleza cara, valeu pela ajuda! Compartilhar este post Link para o post Compartilhar em outros sites