Trata erro para conectar com banco de dados PHP

21/02/2019

7

PHP

Estou construindo um objeto de conexão com banco de dados. Ele está apresentando o seguinte erro.

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\\xampp\\htdocs\\Painel_de_controle\\classes\\banco.class.php on line 67

Fatal error: Uncaught Error: Call to undefined function mysqli_ernno() in C:\\xampp\\htdocs\\Painel_de_controle\\classes\\banco.class.php:76 Stack trace: #0 C:\\xampp\\htdocs\\Painel_de_controle\\classes\\banco.class.php(67): banco->tratarErro('C:\\xampp\\htdocs...', 'executeSQL') #1 C:\\xampp\\htdocs\\Painel_de_controle\\classes\\banco.class.php(61): banco->executeSQL('INSERT INTO cli...') #2 C:\\xampp\\htdocs\\Painel_de_controle\\index.php(18): banco->inserirDados(Object(clientes)) #3 thrown in C:\\xampp\\htdocs\\Painel_de_controle\\classes\\banco.class.php on line 76

A linha 67 fica dentro da public function executeSQL. Dentro dela tem uma função mysqli_query() que está chamando a função acima de conexão com o banco de dados.

Segue o codigo:

<?php
abstract class banco{

//PROPRIEDADES
public $servidor = "localhost:84";
public $usuario = "root";
public $senha = "";
public $nomeBanco = "ourlady";
public $conexao = NULL;
public $dataset = NULL;//resultados das pesquisas
public $linhasAfetadas = -1;

//METODOS
public function __construct(){
$this->connecta();

}//fim construtor

public function __destruct(){
if($this->conexao != NULL):
mysqli_close($this->conexao);
endif;
}//fim destrutor

public function connecta(){
$con = $this->conexao = mysqli_connect($this->servidor,$this->usuario, $this->senha) or die($this->tratarErro(__FILE__,__FUNCTION__,mysqli_errno(),errorInfo(),True));
mysqli_select_db($con,$this->nomeBanco) or die($this->tratarErro(__FILE__,__FUNCTION__,mysqli_errno(),errorInfo(),True));
mysqli_set_charset($con,'utf8');


}// fim connecta

public function inserirDados($objeto){
$sqlInserir = "INSERT INTO ".$objeto->tabela." (";
//loop inseri valores dentro do comando sql para ser inserido no banoc de dados
for($i=0; $i<count($objeto->valores); $i++):
$sqlInserir .= key($objeto->valores);
//validação para inserir a virgula no meio do loop
if($i < (count($objeto->valores)-1)):
$sqlInserir .= ", ";
else:
$sqlInserir .= ") ";
endif;
next($objeto->valores);
endfor;
reset($objeto->valores);
$sqlInserir .= "VALUES (";
for($i=0; $i<count($objeto->valores); $i++):
// validação tenaria para puxar o segundo valor da array
$sqlInserir .= is_numeric($objeto->valores[key($objeto->valores)]) ?
$objeto->valores[key($objeto->valores)] :
"'".$objeto->valores[key($objeto->valores)]."'";
//validação para inserir a virgula no meio do loop
if($i < (count($objeto->valores)-1)):
$sqlInserir .= ", ";
else:
$sqlInserir .= ") ";
endif;
next($objeto->valores);
endfor;
return $this->executeSQL($sqlInserir);
echo $sqlInserir;
}// fim inserir daddos

public function executeSQL($sqlexe=NULL){
if($sqlexe!=NULL):
$query = mysqli_query($this->connecta(),$sqlexe) or $this->tratarErro(__FILE__,__FUNCTION__);
else:

endif;
}// fim da execução sql

public function tratarErro($arquivo=NULL, $rotina=NULL, $numErro=NULL, $msgErro=NULL, $geraExcept=FALSE){
if($arquivo==NULL) $arquivo="não informado";
if($rotina==NULL) $rotina="não informado";
if($numErro==NULL) $numErro=mysqli_ernno($this->conexao);
if($msgErro==NULL) $msgErro=mysqli_error($this->conexao);
$resultado = 'Ocorreu o seguinte erro:<br/>
<b>Arquivo</b>'.$arquivo.'<br/>
<b>Rotina</b>'.$rotina.'<br/>
<b>Erro</b>'.$numErro.'<br/>
<b>Mensagem</b>'.$msgErro;
if($geraExcept==False):
echo($resultado);
else :
die($resultado);

endif;

}// fim tratarerro

}// fim da claas banco




?>



Obg desde já pela ajuda!
Responder