Skip to content

Instantly share code, notes, and snippets.

Created February 21, 2018 12:56
What would you like to do?
PDO Class
* Connects Database Using PDO
* Creates Prepeared Statements
* Binds params to values
* Returns rows and results
class Database {
private $host = DB_HOST;
private $user = DB_USER;
private $pass = DB_PASS;
private $dbname = DB_NAME;
private $dbh;
private $error;
private $stmt;
public function __construct() {
// Set DSN
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;
$options = array (
// Create a new PDO instanace
try {
$this->dbh = new PDO ($dsn, $this->user, $this->pass, $options);
} // Catch any errors
catch ( PDOException $e ) {
$this->error = $e->getMessage();
// Prepare statement with query
public function query($query) {
$this->stmt = $this->dbh->prepare($query);
// Bind values
public function bind($param, $value, $type = null) {
if (is_null ($type)) {
switch (true) {
case is_int ($value) :
$type = PDO::PARAM_INT;
case is_bool ($value) :
$type = PDO::PARAM_BOOL;
case is_null ($value) :
$type = PDO::PARAM_NULL;
default :
$type = PDO::PARAM_STR;
$this->stmt->bindValue($param, $value, $type);
// Execute the prepared statement
public function execute(){
return $this->stmt->execute();
// Get result set as array of objects
public function resultset(){
return $this->stmt->fetchAll(PDO::FETCH_OBJ);
// Get single record as object
public function single(){
return $this->stmt->fetch(PDO::FETCH_OBJ);
// Get record row count
public function rowCount(){
return $this->stmt->rowCount();
// Returns the last inserted ID
public function lastInsertId(){
return $this->dbh->lastInsertId();
Copy link


Copy link

dejvid98 commented May 2, 2020

Thanks Papa Brad!

Copy link

Thank you Brad

Copy link

god I need help

Copy link

Jnalis commented Feb 13, 2022

where actual you need help @absaaraslam

Copy link

@Jnalis I'm having issues with the 3D Secure Card Payments. It gives an error and does not authenticate it.

Copy link

Jnalis commented Feb 14, 2022

can you share the type of error you are getting so people here we can help

Copy link

Thanks i appreciate this so much

Copy link

Even after 6 years, this is still helping all of us. Thank you for posting this for us n00bs :)

Copy link

Came a long way from here and very proud<3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment