Last active
December 13, 2018 08:14
-
-
Save Benbb96/9b56f9dd282f1ac12e316fb689c4669d to your computer and use it in GitHub Desktop.
PHP Class wrapper to handle a PDO connexion to a database.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class Database | |
{ | |
// Database connexion informations to replace | |
private $host = '[localhost|127.0.0.1]'; | |
private $user = '[usr]'; | |
private $pass = '[pwd]'; | |
private $dbname = '[db-name]'; | |
private $dbh; | |
private $error; | |
private $stmt; | |
public function __construct(){ | |
// Set DSN | |
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname . ';charset=utf8'; | |
// Set options | |
$options = array( | |
PDO::ATTR_PERSISTENT => true, | |
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION | |
); | |
// Create a new PDO instance | |
try{ | |
$this->dbh = new PDO($dsn, $this->user, $this->pass, $options); | |
} | |
// Catch any errors | |
catch(PDOException $e){ | |
$this->error = $e->getMessage(); | |
} | |
} | |
public function query($query){ | |
$this->stmt = $this->dbh->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_ASSOC); | |
} | |
public function single(){ | |
$this->execute(); | |
return $this->stmt->fetch(PDO::FETCH_ASSOC); | |
} | |
public function rowCount(){ | |
return $this->stmt->rowCount(); | |
} | |
public function lastInsertId(){ | |
return $this->dbh->lastInsertId(); | |
} | |
public function closeCursor(){ | |
$this->stmt->closeCursor(); | |
} | |
public function closeStatement(){ | |
return $this->stmt = null; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment