Fabyo 66 Denunciar post Postado Março 23, 2005 Classe de conexao com mysqli Classe pra conectar com o banco de dados mysql usando nova versao das funções do mysql a dll mysqli (php5) class_connect.php PHP php ########################### # # #Fabyo Guimaraes 20/02/2005 # #demostração de classe para conexao # #usando o mysqli # ######################### class Conexao { var $host = "servidor"; var $usuario = "usuario"; var $senha = "senha"; var $banco = "banco"; private $mysqli; public function Abrir() { $this->mysqli = new mysqli($this->host, $this->usuario, $this->senha, $this->banco); } public function Fechar() { $this->mysqli->close(); } } class Comando { public function Executar($sql) { $con = new Conexao(); $con->Abrir(); $re = $con->mysqli->query($sql); $con->Fechar(); return $re; } } ?> modo de usar: PHP include "class_connect.php"; $re = Comando::Executar("Select * from tabela"); while ($obj = $re->fetch_object()) { echo $obj->campo; } obs: só passar a sintaxe sql e a conexao abre e fecha e executa a query ?> Compartilhar este post Link para o post Compartilhar em outros sites
Sergio de Andrade 0 Denunciar post Postado Novembro 20, 2006 Cara, muiiito obrigado, seu post foi essencial para mim .. eu estava apanhando muito para executar sp no mysql ..com seu exemplo casou certinhoparabensso uma pergunta, na pagina que faz a chamada se eu quiser executar uma query do tipo mysql_num_rowspara saber a quantidade de registros, como posso implementar ??pois tentei algumas coisas e ele só aceita feth_object..valew Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Novembro 21, 2006 $re->num_rows; http://br.php.net/manual/pt_BR/function.mysqli-num-rows.php Compartilhar este post Link para o post Compartilhar em outros sites
MetalDragonX 0 Denunciar post Postado Dezembro 6, 2006 muito boa o script que você colocou.estava com duvidas com respeito a como trabalhar com class.mas fiquei com uma duvida.na linha 19 do metodo abrir()eu n consegui entender pq a logica quando você diz que a variavel mysqli é um novo mysqli.e na linha 34 quando você diz que a variavel é uma query();no caso a função mysqli so pode ser usado em class ou a função mysql() tb pode ser usada em class? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Dezembro 6, 2006 Entao na linha 18 estou estanciando a classe mysqli é que a classe mysqli ja existe no php e ela é super completa entao basta extende-la para usar ou estancia-la veja mais detalhes: http://www.php.net/mysqli e na linha 34 é um metodo da classe, recomendo estudar um pouco sobre oop senao voce nao vai conseguir entender direito http://www.php.net/oop Compartilhar este post Link para o post Compartilhar em outros sites
MetalDragonX 0 Denunciar post Postado Dezembro 13, 2006 foi boa a dica.deu pra entender melhor e como se trabalhar com essa nova class no php 5vlw Compartilhar este post Link para o post Compartilhar em outros sites
Leonardo Procópio 0 Denunciar post Postado Março 6, 2007 Mano, isso é tudo que preciso!!! mas quando fui testar ak na maquina, deu esse erro:Fatal error: Cannot access private property Conexao::$mysqli in C:\wamp\www\objeto mysqli\class_connect.php on line 27Teria uma dica para me passar?valeu pela ajuda mano!Grande abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Março 6, 2007 nossa tenho ate vergonha de ver essas classes que eu fazia, mas beleza você mudou alguma coisa no codigo? Compartilhar este post Link para o post Compartilhar em outros sites
Leonardo Procópio 0 Denunciar post Postado Março 6, 2007 só mudei os parametros de conexão, e o nome da tabela!Tem idéia doq ta acontecendo? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Março 7, 2007 vou postar um exemplo simples, é que eu to pra postar um sistema feito em oop, mas ainda nao tive tempo de termina-lo aqui eu coloquei tudo numa pagina só mas recomendo voce separar em arquivos <?php /*Use num arquivo de configurações por exemplo config.php */ define("SERVIDOR", "localhost"); define("USUARIO", "root"); define("SENHA", ""); define("BANCO", "banco"); /*Use num arquivo de configurações por exemplo config.php */ #classe de conexão Mysqli class DB extends Mysqli { private $db_config = array(); private static $status = false; private static $conectado = false; private $mysqli; public function __construct() { $this->db_config[0] = defined("SERVIDOR") ? SERVIDOR : ""; $this->db_config[1] = defined("USUARIO") ? USUARIO : ""; $this->db_config[2] = defined("SENHA") ? SENHA : ""; $this->db_config[3] = defined("BANCO") ? BANCO : ""; if(is_array($this->db_config) or !in_array("", $this->db_config)) { self::$status = true;// aqui é para dizer que aparentemente os dados de conexao estao ok. @parent::__construct( $this->db_config[0], $this->db_config[1], $this->db_config[2], $this->db_config[3] ); if(!mysqli_connect_errno()) { self::$conectado = true;//aqui é para dizer se a conexao ta aberta return true; } } } public function __destruct() { $this->Fechar(); } public function Fechar() { if(self::$conectado)//se tiver conectado fecha { parent::close(); self::$conectado = false;//seta para status da conexao = false } } public function Executar($sql) { if(self::$conectado)// só executa a query se a conexao foi bem sucedida { if ($re = parent::query($sql)) { return $re; /* teste simples e retorna o resultado da conexao, nao recomendo trabalhar assim em vez disso voce pode tratar melhor as execuções e retorno da query, isso que ue mostrei foi só um exemplo */ } } } } /* Use num arquivo separado por exemplo singleton.php e adicione ele com require_once*/ #classe singleton e factory de objetos final class Singleton { private static $instance = array(); final private function __construct() {} public final function __clone() { trigger_error('Nao é possivel clonar uma classe singleton', E_USER_ERROR); } static public function &factory($className) { if(!isset(self::$instance[$className])) { self::$instance[$className] = new $className; } return self::$instance[$className]; } } $classe =& Singleton::factory( "DB" );// cria a estancia de 1 objeto de conexao DB $re = $classe->Executar("select * from tabela");// passa o select do banco /* aqui eu nao fiz nenhuma validação mas recomendo testar antes se a $re esta correta e sem erros */ while ($l = $re->fetch_array(MYSQLI_ASSOC)) { echo $l["campo"]."<br />"; } #fecho a conexao com o banco $classe->Fechar(); ?> dica viu alguma função e nao entende pra que serve?, digite http://www.php.net/nome_dafuncao qualquer duvida só postar Compartilhar este post Link para o post Compartilhar em outros sites
Leonardo Procópio 0 Denunciar post Postado Março 8, 2007 mano, pra funcionar akele primeiro codigo, tive q mudar para:public $mysqliao inves de private.Quando estava private, ele estava dando erro!Já o segundo script, funcionou na moral, tudo blzinha!Grande ajuda vei!! Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Renan 2 Denunciar post Postado Setembro 12, 2008 Fabyo, eu não ententi muito bem como funciona akela classe Singleton q você criou. para que exatamente ela serve? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Setembro 12, 2008 Voce precisa entender sobre OOP e design pattern http://pt.wikipedia.org/wiki/Singleton http://br.php.net/manual/pt_BR/language.oop5.patterns.php Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Renan 2 Denunciar post Postado Setembro 12, 2008 ah tah.. agora eu entendi o pq de usar o singleton. porém não funcionou o exemplo.. creio que o erro está aki: self::$instance[$className] = new $className; eu colockei a classe DB num arquivo config. php e a classe singleton num arquivo chamado singleton.class.php ai na página eu do um require_once em cada um.. porém não apresenta nenhum erro.. fui fazendo testes e vi que o q provavelmente não funcionou foi essa parte do código aí. o que será q eu fiz de errado? obs: criei uma classe teste dentro do arquivo singleton.class.php aí nakela linha do código instanciei a classe teste, e funcionou.. tentei dar um require-once no arquivo config.php, porém continuou não funcionando ocm a classe DB. Compartilhar este post Link para o post Compartilhar em outros sites
DeToNeS 0 Denunciar post Postado Novembro 11, 2008 Boa Madrugada Pessoal, Fabyo tenho uma dúvida bem iniciante, não consegui compreender a condição exposta nessa parte! $this->db_config[0] = defined("SERVIDOR") ? SERVIDOR : ""; Se você ou algum outro membro poder me dar uma força para compreender a condição do "?" e ":" eu agradeço! Boa madruga a todos! Compartilhar este post Link para o post Compartilhar em outros sites
DeToNeS 0 Denunciar post Postado Novembro 11, 2008 Outra coisa que pode não somar em nada usualmente, mais para os iniciantes terem mais uma referência de algum possível mal funcionamento adicionei mais umas linhas no código! A impressão de uma mensagem de erro caso haja uma falha de conexão com o banco de dados! if(!mysqli_connect_errno()) { self::$conectado = true; return true; } else { printf("Falha na Conexão Com o Banco de Dados!"); exit(); } T+ Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Renan 2 Denunciar post Postado Novembro 30, 2008 é apenas um if por exemplo $var = condição ? faça isso : faça akilo se se não é mais ou menos isso Boa Madrugada Pessoal, Fabyo tenho uma dúvida bem iniciante, não consegui compreender a condição exposta nessa parte! $this->db_config[0] = defined("SERVIDOR") ? SERVIDOR : ""; Se você ou algum outro membro poder me dar uma força para compreender a condição do "?" e ":" eu agradeço! Boa madruga a todos! Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Dezembro 1, 2008 É um if ternario http://php.net/manual/en/language.operators.comparison.php $var = condição ? "resultado1" : "resultado2"; mesma coisa que: if(condição ){ $var = "resultado1"; } else { $var = "resultado2"; } só lembrando que o ternario é para condições simples, se caso precise fazer algo mais com a condição use o modo normal do if Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Renan 2 Denunciar post Postado Julho 17, 2009 pessoal, com bases nos exemplos apresentado e nos meus estudo, criei uma classe de conexão utilizando a extensão mysqli. Quem se interessar, está aí Classe de Conexão PHP MySQL Compartilhar este post Link para o post Compartilhar em outros sites
Renato Bento 0 Denunciar post Postado Fevereiro 3, 2016 Muito bom o script mas me surgiram umas duvidas (estou começando agora a programar pra valer orientado a objeto :wacko: ), 1) Quando usamos o padrão singleton o construtor da classe conexão não deveria ser private ? pq senão eu poderia instanciar essa classe a qualquer momento passando por cima do padrão de projeto. 2) Por essa classe ter o destruct não teriamos que instanciar essa classe toda vez que precisarmos utiliza-la? Compartilhar este post Link para o post Compartilhar em outros sites