3
I have this class that manages the database :
<?php
abstract class database{
/*Método construtor do banco de dados*/
private function __construct(){}
/*Evita que a classe seja clonada*/
private function __clone(){}
/*Método que destroi a conexão com banco de dados e remove da memória todas as variáveis setadas*/
public function __destruct() {
$this->disconnect();
foreach ($this as $key => $value) {
unset($this->$key);
}
}
private static $dbtype = "mysql";
private static $host = "localhost";
private static $port = "3306";
private static $user = "root";
private static $password = "";
private static $db = "PDO";
/*Metodos que trazem o conteudo da variavel desejada
@return $xxx = conteudo da variavel solicitada*/
private function getDBType() {return self::$dbtype;}
private function getHost() {return self::$host;}
private function getPort() {return self::$port;}
private function getUser() {return self::$user;}
private function getPassword(){return self::$password;}
private function getDB() {return self::$db;}
private function connect(){
try
{
$this->conexao = new PDO($this->getDBType().":host=".$this->getHost().";port=".$this->getPort().";dbname=".$this->getDB(), $this->getUser(), $this->getPassword());
}
catch (PDOException $i)
{
//se houver exceção, exibe
die("Erro: <code>" . $i->getMessage() . "</code>");
}
return ($this->conexao);
}
private function disconnect(){
$this->conexao = null;
}
/*Método select que retorna um VO ou um array de objetos*/
public function selectDB($sql,$params=null,$class=null){
$query=$this->connect()->prepare($sql);
$query->execute($params);
if(isset($class)){
$rs = $query->fetchAll(PDO::FETCH_CLASS,$class) or die(print_r($query->errorInfo(), true));
}else{
$rs = $query->fetchAll(PDO::FETCH_OBJ) or die(print_r($query->errorInfo(), true));
}
self::__destruct();
return $rs;
}
/*Método insert que insere valores no banco de dados e retorna o último id inserido*/
public function insertDB($sql,$params=null){
$conexao=$this->connect();
$query=$conexao->prepare($sql);
$query->execute($params);
$rs = $conexao->lastInsertId() or die(print_r($query->errorInfo(), true));
self::__destruct();
return $rs;
}
/*Método update que altera valores do banco de dados e retorna o número de linhas afetadas*/
public function updateDB($sql,$params=null){
$query=$this->connect()->prepare($sql);
$query->execute($params);
$rs = $query->rowCount() or die(print_r($query->errorInfo(), true));
self::__destruct();
return $rs;
}
/*Método delete que excluí valores do banco de dados retorna o número de linhas afetadas*/
public function deleteDB($sql,$params=null){
$query=$this->connect()->prepare($sql);
$query->execute($params);
$rs = $query->rowCount() or die(print_r($query->errorInfo(), true));
self::__destruct();
return $rs;
}
}
?>
I wonder how I can:
- Perform a select with Where
- access the value returned for a while or for
- A function that returns the quantity returned to me as mysql_num_rows
Possible duplicate of Insert with Pdo and OO
– Yure Pereira
I don’t think it’s duplicate. Certainly the questions are similar and related (even with the same author), but they ask different things. Besides, the answer to the other question doesn’t answer that one from here. And certainly the author of the question would not create another question with the same purpose being that he already had his other question answered and accepted the answer given.
– Victor Stafusa
Using something ready can be even better: Doctrine, Propel or Redbean
– Wallace Maxters