<?php
/*#######################################################################
# #
# Description : framework for database accesses #
# Author : Mr. AsankA De Silva #
# Date Created : November 11,2008 #
# Project : #
# #
#######################################################################*/
class DBAccess
{
/* this member variable holds the name of the data base*/
protected $Catalog =' ';
/*this holds the name of the db server. [may be the IP address of the server with port id example 192.172.0.243:4328]*/
protected $ServerName ='';
/*the user name use to loggin in to the database */
protected $Username = '';
/*the password for the above user name wich used to loggin in to the db server*/
protected $password = '';
protected $errorMsg="";
//########################################## MySql 4 #########################################################################
/*the constructor initializes the db connection properties
* to get the connection you must call the openConnection() method
* it returns link identifier for current db Connection
*/
function __construct()
{
/*$this->ServerName= ini_get("ServerName");
$this->UserName = ini_get("UserName");
$this->password = ini_get("Password");
$this->Catalog = ini_get("dbName"); */
}
function __toString()
{
return "DB Acces Class";
}
/*opens the Connection to
*database and return the
*Link Identifier for the
*connection
*/
public function ConnectDb()
{
try
{
$Link = mysql_connect($this->ServerName, $this->Username ,$this->password);
//if the link identifer =FALSE then Exception is trhown since it has not connected to the server
if(!$Link)
{
$errorMsg ="Connecting mysql server was failed";
return false;
}
$isConnected = mysql_select_db($this->Catalog,$Link);
if(!$isConnected)
{
$errorMsg ="Database cannot be found";
return false;
}
//if selection fails then Exception is thrown
}
catch (Exception $e)
{
$errorMsg ="Connecting mysql server was failed";
//echo("Error In Connetion");
return false;
// throw new Exception('Could not Connect the Database ['.$this->Catalog.']'.$e);
}
//if no exception is thrown then link identifier is returned
return $Link;
}
/*
* attemp to close the
* database connection
* identified through
* the provided link identifier
*/
public function CloseConnection($linkIdentifier)
{
try
{
return mysql_close($linkIdentifier);
}
catch (Exception $ex)
{
return fals;
}
}
/*
*perform a insert/update query on
*mysql database and return [true]
* on success and [false] if fails
*/
public function InsertUpdateQuery($strQuery)
{
$result=false;
try
{
$link = $this->ConnectDB();
$result = mysql_query($strQuery,$link);
}
catch(Exception $ex)
{
$result=false;
$errorMsg =mysql_error($link);
}
$this->CloseConnection($link);
return $result;
}
/*
* perform a select query and
* retuns the results as Associative array
* if fails returns a Exception from MySql
* <param>
* <$strQuery> MySql Select Query </$strQuery>
* </param>
*/
public function GetPopulateResultSet($strQuery)
{
try
{
$link = $this->ConnectDb();
if(!$link)
{
$errorMsg="Connection failed to server";
return false;
}
else
{
$ResultSet = mysql_query($strQuery,$link);
$this->CloseConnection($link);
return $ResultSet;
}
}
catch (Exception $e)
{
$this->CloseConnection($link);
$errorMsg = mysql_error($link);
return false;
}
}
/*
* returns an integer value
* indicating total no of
* records on the particular
* Table you specified
* <param>
* <$tableName> name of the table </$tableName>
* </param>
*/
public function GetNoOfRecords($tableName)
{
/*$link = $this->ConnectDb();
try
{
$sqlCommand= "Select * From $tableName";
$result= mysql_query($sqlCommand,$link);
$numOfRecords= mysql_num_rows($result);
}
catch (Exception $e)
{
$this->CloseConnection($link);
throw $e;
}
$this->CloseConnection($link);
return $numOfRecords;*/
}
/*
* this initializes a transaction on mySql
* server and return link identfier for the
* created connection if success, returns
* false if fails.
*/
public function beginTransaction()
{
try
{
$link = $this->ConnectDb();
$result = mysql_query("BEGIN",$link);
if(!$result)
{
$errorMsg =mysql_error($link);
return false;
}
else
{
return $link;
}
}
catch (Exception $ex)
{
$errorMsg =mysql_error($link);
return false;
}
}
/*
* this can be used to commit the transaction
* that you have allready begin. to identify
* connection you have to provide the
* link identifier returned by beginTransaction()
*/
public function CommitTransaction($link)
{
try{
$result = mysql_query("COMMIT",$link);
if(!result)
{
$errorMsg =mysql_error($link);
return false;
}
else
{
return true;
}
}
catch (Exception $ex)
{
$errorMsg =mysql_error($link);
return false;
}
}
/*
* use this function to roll back the
* transaction that you have being
* executed.
*/
public function RollBackTransaction($link)
{
try
{
$result = mysql_query("ROLLBACK",$link);
if(!$result)
{
$errorMsg =mysql_error($link);
return false;
}
else
{
return true;
}
}
catch (Exception $ex)
{
$errorMsg =mysql_error($link);
return false;
}
}
/*
* the method can be used to execute
* a MySql Query wich will not return
* scalar array. this can be used to
* execute insert/update queries
* since this only returns boolean value
* indicating query successfully
* performed or not. [if success :true , else : false]
*/
public function Trans_InsertUpdateQuery($query,$link)
{
try
{
$result = mysql_query($qery,$link);
if(!$result)
{
$errorMsg =mysql_error($link);
return false;
}
else
return true;
}
catch (Exception $ex)
{
$errorMsg =mysql_error($link);
return false;
}
}
/*
* this method can be used to perform a
* mySql SELECT queries with the transaction
* need to provide the link identifier
* for the connection currently you have
* being used. if query fails return false
* otherwise resulting array wil be return
*/
public function Trans_GetPopulateResultSet($query,$link)
{
try
{
$result =mysql_query($query,$link);
if(!result)
{
return false;
}
else
{
return $result;
}
}
catch(Exception $ex)
{
throw $ex;
}
}
public function GetNextNo($TableName, $ColumnName)
{
$mysqlQuery = "SELECT IFNULL(MAX($ColumnName),0) FROM $TableName";
$link = $this->ConnectDb();
$result = mysql_query($mysqlQuery,$link);
if(!$result)
{
return false;
$this->CloseConnection($link);
}
else
{
$updateColumn = "UPDATE $TableName SET $ColumnName=".$result++;
if(mysql_query($updateColumn,$link))
{
return $result;
}
else
{
$this->CloseConnection($link);
}
}
}
public function GetNextNoWithTrans($TableName,$ColumnName)
{
$SelectQuery= "SELECT IFNULL(MAX($ColumnName,0) FROM $TableName";
$UpdateQuery ="UPDATE $TableName SET $ColumnName=";
try
{
$link = $this->beginTransaction();
$result = mysql_query($SelectQuery,$link);
if(!$result)
{
$this->RollbackTransaction();
return false;
}
else
{
if(mysql_query($UpdateQuery.$result++,$link))
{
$this->CommitTransaction();
return $result;
}
else
{
$this->RollbackTransaction();
return false;
}
}
}
catch (Exception $ex)
{
$this->RollbackTransaction();
throw $ex;
}
}
/*
*
*
*
**/
public function getTheError()
{
return $errorMsg;
}
//############################################### MySql 4 #####################################################################
/* here region of mysql 4 functions will end and MySql 5 function region is started */
//############################################### MySql 5 #####################################################################
/*
* Executing Stored procedures can only be
* done with the MySql 5 or later versions.
* this requires php to use mysql improved extension
* if this fails try configuring your web server to use
* php_mysqli.dll in php extension
* [ $param ] is optional
*/
public function InsertUpdatewithSP($spName,$param=NULL)
{
$ArrCount =count($param);
$query="";
$linkIdentifier;
if($ArrCount >0)
{
$query = "call".$spName."(";
for ($i=0 ; $i < $ArrCount ; $i++)
{
$query.="'".$param[$i]."',";
}
$query = rtrim($query,',').")";
}
try
{
$linkIdentifier = mysqli_connect($ServerName,$UserName,$password,$Catalog);
if(!$linkIdentifier)
{
$result=mysqli_query($linkIdentifier,$query);
if(!$result){
$errorMsg="Query faild to perform";
return false;
}
else{
return true;
}
mysqli_close($linkIdentifier);
}
else
{
mysqli_close($linkIdentifier);
$errorMsg= "Could not connect to the mysql server";
return false;
}
}
catch (Exception $e)
{
throw new Exception("Could not connect to the server. Your MySql server may not support this feature, try newer version of MySql Server");
}
}
/*
* use this method to execute Stored procedure
* on mysql db and get result set as a output
* this returns false if query fails and
* returns resulting array if query succeed
* $param is optional. you may leave it
* without passing values to it.
*/
public function GetpopulateResultSetwithSP($spName, $param = NULL)
{
$ArrCount =count($param);
$query="";
if($ArrCount >0)
{
$query = "call".$spName."(";
for ($i=0 ; $i < $ArrCount ; $i++)
{
$query.="'".$param[$i]."',";
}
$query = rtrim($query,',').")";
}
try
{
$linkIdentifier = mysqli_connect($ServerName,$UserName,$password,$Catalog);
}
catch (Exception $e)
{
throw new Exception("Could not connect to the server. Your MySql server may not support this feature, try newer version of MySql Server");
}
$result=mysqli_query($linkIdentifier,$query);
mysqli_close($linkIdentifier);
if(!$result)
return false;
else
return $result;
}
/*
* this method connects mysql db
* using [mysql Improved] features.
* most of the times to work with
* stored rocedures you have to use mySqli
*/
public function iConnectDB()
{
try
{
$link = mysqli_connect($ServerName,$UserName,$password,$Catalog);
if(!$link)
{
return false;
}
else
{
return $link;
}
}
catch (Exception $ex)
{
return false;
}
}
}
?>
|