<?php
require_once('app/config.php'); // Require constants HOST, DATABASE, USER, PASSWORD
/*
dbConnection class.
Manages connections to and operations on the database. Call dbConnection::getInstance() to return an instance.
Prepare your statements by calling prepareQuery() on the object
Attribute list:
$instance:
> Static self instance to manage database resource
$connection:
> Holds connection resource
$sth:
> Statement handler variable. Handles SQL statements.
_______________________________________________________________________________________________________________
Method list:
getInstance():
> Creates or returns existing connection to the database
prepareQuery():
> Prepares the $sth variable for execution.
bindParameter():
> Binds parameters to the $sth variable.
numRows($query):
> Returns the number of returned from a query
runQuery():
> Executes the current statement on the database
fetchRow():
> Executes the current statement then returns an associative array
fetchObj($className, $parameters = NULL):
> Executes the current statement and returns an object of your specification. Also takes additional parameters to pass to the object's constructor.
*/
class dbConnection
{
private static $instance = NULL;
private $connection;
private $sth;
function __construct()
{
$this->connection = new PDO('mysql:host=' . HOST . ';dbname=' . DATABASE, USER, PASSWORD);
}
function getInstance()
{
if (self::$instance == NULL)
self::$instance = new dbConnection();
return self::$instance;
}
function prepareQuery($query)
{
$this->sth = $this->connection->prepare($query);
}
function bindParameter($number, $value)
{
$this->sth->bindParam($number, $value);
}
function numRows()
{
try
{
$this->sth->execute();
$count = $this->sth->rowCount();
return $count;
}
catch(PDOException $e)
{
echo __LINE__.$e->getMessage();
}
}
function runQuery()
{
try
{
$this->sth->execute() or print_r($connection->errorInfo());
}
catch(PDOException $e)
{
echo __LINE__.$e->getMessage();
}
}
function fetchRow()
{
try
{
$this->sth->setFetchMode(PDO::FETCH_ASSOC);
$this->sth->execute();
return $this->sth;
}
catch(PDOException $e)
{
echo __LINE__.$e->getMessage();
}
}
function fetchObj($className, $parameters = NULL)
{
try
{
$this->sth->setFetchMode(PDO::FETCH_CLASS, $className, $parameters);
$this->sth->execute();
return $this->sth;
}
catch(PDOException $e)
{
echo __LINE__.$e->getMessage();
}
}
}
?>
How to test singleton? Take an object at a time, which is closed when you are finished with the object at the end.