Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
-
- var $host = "servidor";
- var $usuario = "usuario";
- var $senha = "senha";
- var $banco = "banco";
- private $mysqli;
-
-
- $con = new Conexao();
- $con->Abrir();
- $re = $con->mysqli->query($sql);
- $con->Fechar();
- return $re;
-
?>
modo de usar:
PHP
-
-
-
-
-
$re = Comando::Executar("Select * from tabela");
-
-
while ($obj = $re->fetch_object()) {
-
-
echo $obj->campo;
-
-
-
-
?>
$re->num_rows;
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?
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:
e na linha 34 é um metodo da classe, recomendo estudar um pouco sobre oop senao voce nao vai conseguir entender direito
foi boa a dica.deu pra entender melhor e como se trabalhar com essa nova class no php 5vlw
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!
nossa tenho ate vergonha de ver essas classes que eu fazia, mas beleza
você mudou alguma coisa no codigo?
só mudei os parametros de conexão, e o nome da tabela!Tem idéia doq ta acontecendo?
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");#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() parent::close();
self::$conectado = false;//seta para status da conexao = false
}
}
public function Executar($sql)/* 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 />";
}$classe->Fechar();
?>
dica viu alguma função e nao entende pra que serve?, digite http://www.php.net/nome_dafuncao
qualquer duvida só postar
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!!
Fabyo,
eu não ententi muito bem como funciona akela classe Singleton q você criou.
para que exatamente ela serve?
Voce precisa entender sobre OOP e design pattern
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.
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!
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();
}é 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!
É 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
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í
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?
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