Skip to content

Instantly share code, notes, and snippets.

@fjpalacios
Created July 8, 2017 11:52
Show Gist options
  • Save fjpalacios/6a2e60c776d3b5d9fabe217dc037c24d to your computer and use it in GitHub Desktop.
Save fjpalacios/6a2e60c776d3b5d9fabe217dc037c24d to your computer and use it in GitHub Desktop.
Class for BDD connection using PDO (PHP)
/*
config.php
define("DB_HOST", "localhost");
define("DB_USER", "USER");
define("DB_PASS", "PASSWORD");
define("DB_NAME", "DBNAME");
*/
class Database {
private $host = DB_HOST;
private $user = DB_USER;
private $pass = DB_PASS;
private $dbname = DB_NAME;
private $db;
private $error;
private $stmt;
public function __construct() {
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname . ';charset=utf8';
$options = array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
PDO::ATTR_EMULATE_PREPARES => false
);
try {
$this->db = new PDO($dsn, $this->user, $this->pass, $options);
} catch (PDOException $e) {
$this->error = $e->getMessage();
}
}
public function query($query) {
$this->stmt = $this->db->prepare($query);
}
public function bind($param, $value, $type = null) {
if (is_null($type)) {
switch (true) {
case is_int($value):
$type = PDO::PARAM_INT;
break;
case is_bool($value):
$type = PDO::PARAM_BOOL;
break;
case is_null($value):
$type = PDO::PARAM_NULL;
break;
default:
$type = PDO::PARAM_STR;
}
}
$this->stmt->bindValue($param, $value, $type);
}
public function execute() {
return $this->stmt->execute();
}
public function resultset() {
$this->execute();
return $this->stmt->fetchAll(PDO::FETCH_OBJ);
}
public function resultsetA() {
$this->execute();
return $this->stmt->fetchAll(PDO::FETCH_ASSOC);
}
public function column($number) {
$this->execute();
return $this->stmt->fetchColumn($number);
}
public function single() {
$this->execute();
return $this->stmt->fetch(PDO::FETCH_OBJ);
}
public function rowCount() {
return $this->stmt->rowCount();
}
public function lastInsertId() {
return $this->db->lastInsertId();
}
public function beginTransaction() {
return $this->db->beginTransaction();
}
public function endTransaction() {
return $this->db->commit();
}
public function cancelTransaction() {
return $this->db->rollBack();
}
public function debugDumpParams() {
return $this->stmt->debugDumpParams();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment