msx83
5/3/2016 - 9:23 AM

PHP Database class

PHP Database class

<?php

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;
		// Set options
		$options = array(
			PDO::ATTR_PERSISTENT         => true,
			PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
			PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
			);
		// 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();
		}
	}
	
	//query
	public function query($query)
	{
		$this->stmt = $this->dbh->prepare($query);
	}
	
	//bind
	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);
	}

	//execute
	public function execute()
	{
		return $this->stmt->execute();
	}

	//resultset
	public function resultset()
	{
		$this->execute();
		return $this->stmt->fetchAll(PDO::FETCH_ASSOC);
	}
	
	//single
	public function single()
	{
		$this->execute();
		return $this->stmt->fetch(PDO::FETCH_ASSOC);
	}

	//rowCount
	public function rowCount()
	{
		return $this->stmt->rowCount();
	}

	//lastInsertId
	public function lastInsertId()
	{
		return $this->dbh->lastInsertId();
	}

	//beginTransaction
	public function beginTransaction()
	{
		return $this->dbh->beginTransaction();
	}

	//endTransaction
	public function endTransaction()
	{
		return $this->dbh->commit();
	}

	//cancelTransaction
	public function cancelTransaction()
	{
		return $this->dbh->rollBack();
	}
	
	//debugDumpParams
	public function debugDumpParams()
	{
		return $this->stmt->debugDumpParams();
	}
}