1
I have the following PDO class :
<?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 = "bd";
/*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 have my class extended from the clase database. I created a function to check if there is a user with that email :
$sql = "SELECT * FROM `user` WHERE `email` = ?";
I pass the array given with the email and run :
$result = parent::selectDB($sql, $date);
$qnt = count($result);
if($qnt > 0) {return false;} else {return true;}
But whenever you have no record returns me :
Array ( [0] => 00000 [1] => [2] => )
How could I return only the number ? And stop returning it ? Thank you
Counting :
$qnt =0;
foreach ($lista as $l) {
$qnt++;
}
If($qnt >0 ) { return false;} else {return true; }
If you just want to know the number of records use a
count()
sql.– rray