Erro ao fechar a conexão com o banco de dados

20/11/2019

0

PHP

Olá pessoal,

Estou testando uma classe de conexão, mas ao finalizar a conexão está me apresentando o seguinte erro:
Warning: mysqli_close(): Couldn't fetch mysqli in C:\xampp\htdocs\teste\_class\class.MySQL.php on line 54

o código da classe é:
<?php
/*//Verificação de segurança
$checkurl = $_SERVER["PHP_SELF"];
if(eregi("_class/class.MySQL.php","$checkurl")){
header("Location: ../index.php");
}*/

class MySQL {
var $host = "localhost";
var $user = "root";
var $password = "";
var $database = "odara";

var $query;
var $link;
var $result;

function MySQL(){
//Apenas instancia o objeto
}

//Esta função faz a conexão com o Banco de Dados
function connect(){
$this->link= mysqli_connect($this->host, $this->user, $this->password);
if(!$this->link){
echo "Falha na conexão com o Banco de Dados!.<br/>";
echo "Erro: ".mysqli_error();
die();
} elseif(!mysqli_select_db ($this->link, $this->database)){
echo "O banco de dados solicitado não pode ser aberto!<br/>";
echo "Erro: ".mysqli_error();
die();
}
}

//Esta função executa uma Query
function executeQuery($query){
$this->connect();
$this->query=$query;
if($this->result= mysqli_query($this->link, $this->query)){
$this->disconnect();
return $this->result;
} else {
echo "Ocorreu um erro na execução da SQL";
echo "Erro: ".mysqli_error();
echo "SQL: ".$query;
die();
disconnect();
}
}

//Esta função desconecta do Banco
function disconnect(){
return mysqli_close($this->link);
}
}

E o index.php de teste está assim:
<?php

include("_class/class.MySQL.php");

$mySQL = new MySQL;
$rsProdutos = $mySQL->executeQuery("SELECT * FROM produtos;");
$rsProdutos_totalRows = mysqli_num_rows($rsProdutos);
//$mySQL->disconnect();
while ($row_rsProdutos = mysqli_fetch_array($rsProdutos)) {
echo $row_rsProdutos['prod_nome']."<br>";
}
$mySQL->disconnect();
?>

OBS.: A listagem dos produtos é apresentada, mas no final da listagem me apresenta o erro:
Warning: mysqli_close(): Couldn't fetch mysqli in C:\xampp\htdocs\teste\_class\class.MySQL.php on line 54

Obrigado a todos
Clériston Melo

Clériston Melo

Responder

Posts

20/11/2019

Clériston Melo

Olá pessoal,

Estou testando uma classe de conexão, mas ao finalizar a conexão está me apresentando o seguinte erro:
Warning: mysqli_close(): Couldn't fetch mysqli in C:\\xampp\\htdocs\\teste\\_class\\class.MySQL.php on line 54

o código da classe é:
<?php
/*//Verificação de segurança
$checkurl = $_SERVER["PHP_SELF"];
if(eregi("_class/class.MySQL.php","$checkurl")){
header("Location: ../index.php");
}*/

class MySQL {
var $host = "localhost";
var $user = "root";
var $password = "";
var $database = "odara";

var $query;
var $link;
var $result;

function MySQL(){
//Apenas instancia o objeto
}

//Esta função faz a conexão com o Banco de Dados
function connect(){
$this->link= mysqli_connect($this->host, $this->user, $this->password);
if(!$this->link){
echo "Falha na conexão com o Banco de Dados!.<br/>";
echo "Erro: ".mysqli_error();
die();
} elseif(!mysqli_select_db ($this->link, $this->database)){
echo "O banco de dados solicitado não pode ser aberto!<br/>";
echo "Erro: ".mysqli_error();
die();
}
}

//Esta função executa uma Query
function executeQuery($query){
$this->connect();
$this->query=$query;
if($this->result= mysqli_query($this->link, $this->query)){
$this->disconnect();
return $this->result;
} else {
echo "Ocorreu um erro na execução da SQL";
echo "Erro: ".mysqli_error();
echo "SQL: ".$query;
die();
disconnect();
}
}

//Esta função desconecta do Banco
function disconnect(){
return mysqli_close($this->link);
}
}

E o index.php de teste está assim:
<?php

include("_class/class.MySQL.php");

$mySQL = new MySQL;
$rsProdutos = $mySQL->executeQuery("SELECT * FROM produtos;");
$rsProdutos_totalRows = mysqli_num_rows($rsProdutos);
//$mySQL->disconnect();
while ($row_rsProdutos = mysqli_fetch_array($rsProdutos)) {
echo $row_rsProdutos['prod_nome']."<br>";
}
$mySQL->disconnect();
?>

OBS.: A listagem dos produtos é apresentada, mas no final da listagem me apresenta o erro:
Warning: mysqli_close(): Couldn't fetch mysqli in C:\\xampp\\htdocs\\teste\\_class\\class.MySQL.php on line 54

Obrigado a todos



Descobri o erro:
Na função executaQuery ele já fecha a conexão após a execução, e no index.php tem novamente o comando para fechar, e é isso que esta causando o erro...
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar