Ir para conteúdo
Fórum Script Brasil
  • 0

Php5 Conexões


dlumeida

Pergunta

Ai galeria estou tentando aprender PHP, mas como sempre mexi com ASP estou tendo algumas dificuldades, ainda mais quando se trata a OOP.

Criei uma classe de conexão, e uma função para conectar e outra para desconectar.

<?php

//Página responsavel pela conexão ao MySQL.

class conexao {
	public function conecta() {// Criando a conexão
  $mysqli = new mysqli("localhost", "root", "sa", "site");
  
  if (mysqli_connect_errno()) {// Teste de conexão
     printf("Erro de Conexão: %s\n", mysqli_connect_error());
     exit();
  }// End if
  echo "conectado";
	}// Function Conecta

	public function desconecta() {// Fechando a conexão
	$mysqli->close(); // linha aonde está o erro 17
	echo "desconectado";
	}// Function desconecta
}// Class conexao

$status = new conexao;
$status->conecta();
$status->desconecta();
?> 
Mas quando executo essa pagina o Apache me retorna esse erro.
PHP Fatal error:  Call to a member function close() on a non-object in C:\\Documents and Settings\\Daniel\\Desktop\\Site\\conexao.php on line 17

Como era de costume no ASP, eu criava um arquivo "conexao.asp" onde eu tinha uma função que conectava e outra que desconectava.

alguém sabe se isto que eu fiz está certo, ou se há alguma maneira correta de se fazer...

Obrigado.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

já que você esta usando o php5 faça sua classe mais orientada a objetos

use __construct(), e __destruct(), para conectar e desconectar seu banco

obs: a Classe Mysqli já esta pronta ela é uma classe completa, não faz sentido você recriar uma classe e estanciar dentro a classe mysqli, o que você pode fazer é acrescentar metodos a classe monte uma classe e extenda da classe mysqli

e no seu caso para funcionar declare o $mysqli fora dos metodos e use ele dentro com $this->mysqli

Link para o comentário
Compartilhar em outros sites

  • 0

Fabyo,

Fiz da meneira que você falou.

<?php

//Página responsavel pela conexão ao MySQL.

class conexao extends mysqli {
	function __construct() {
  $this->connect("localhost", "root", "sa", "site");
  echo "conectado<br/>";
	}// __construct

	function query_fetch($query)
	{
	$row=$this->query($query)->fetch_array();
	return "$row[0],$row[1],$row[2],$row[3],";
	} 

	function __destruct() {
  $this->close();
  echo "<br/>desconectado";
	}// __destruct

}// Class conexao extends mysqli

$status = new conexao;
$resultado = $status->query_fetch('select col1,col2,col3,col4 from table');

echo $resultado;
?> 
Assim deu certo, só que verifiquei que quando instancio a conexão a mesma executa o __destruct() automaticamente. Qual é o criterio para a execução do __destruct de uma classe? Resulta do codigo acima.
conectado
valor da col1, valor da col2, valor da col3, valor da col4
desconectado

Está correto, mas o que faz com que o _destruct seja executado? e qual momento o mesmo é executado?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...