Olá, o meu código não me reporta erro nenhum, más não faz o INSERT no banco, o que há de errado? Estou fazendo da maneira correta? Alguma dica ou sugestão?
Classe de Conexão com o banco
abstract class Conn { // Defini que ela é uma classe abstrata, ou seja, ela não pode ser instanciada
private static $status = null; // Atributo para verificar se já existe uma conexão com o banco
public static function getConn(){ // Método que irá ser instanciado para se fazer uma conexão
if(self::$status == null){ // Se não estiver conectado, então faça a conexão
$opt = array(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Definindo o tipo de erro da minha conexão
self::$status = new PDO(DB['db']. ":" . "dbname:" . DB['name'] . "; host: " . DB['host'], DB['user'], DB['pass'], $opt);
return self::getConn();
} else {
return self::$status; // Se já estiver conectado, então me retorne a conexão
}
}
}
Classe De Inserção
class Insert extends Conn{
private $query;
private $tabela;
private $dados;
// PDO
private $Conn;
// PDO Statements
private $Insert;
public function exeInsert($Tabela, $Dados){ // Carrega a minha classe com as informações
$this->tabela = (string) $Tabela;
$this->dados = (array) $Dados;
$this->getQuery();
$this->execute();
}
public function getRowCount(){ // Retorna quantas linhas foram afetadas
return $this->Insert->rowCount();
}
private function connect(){ // Faz a conexão com o banco e o Statements
$this->Conn = parent::getConn(); // Conectando
$this->Insert = $this->Conn->prepare($this->query); // O Insert prepara a minha query
}
private function getQuery(){
foreach ($this->dados as $key => $value) {
$fields[] = $key;
$links[] = ':' . $key;
}
$fields = implode(', ', $fields);
$links = implode(', ', $links);
$this->query = "INSERT INTO {$this->tabela} ({$fields}) VALUES ({$links})";
}
private function setParams($Statements, array $Parameters){
foreach ($Parameters as $key => $value) {
$this->setParam($Statements, $key, $value);
}
}
private function setParam($Statements, $Key, $Value){
$Statements->bindParam(":{$Key}", $Value);
}
private function execute(){
$this->connect();
try{
$this->setParams($this->Insert, $this->dados);
$this->Insert->execute();
} catch (PDOException $ex) {
$ex->getMessage();
}
}
}
Página Index
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>Testando o meu DAO</title>
</head>
<body>
<?php
require_once './config.php';
$insert = new Insert();
$usu = array(
"usuario" => "Eliane",
"senha" => "password"
);
$insert->exeInsert('usuario', $usu);
var_dump($insert);
?>
</body>
</html>
No meu config.php está apenas o auto load das classes e as minha defines do banco, está tudo correto.