Login   Register  
PHP Classes
elePHPant
Icontem

File: class.mysqldb.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Roy Toledo  >  MySQL Wrapper Class 2  >  class.mysqldb.php  >  Download  
File: class.mysqldb.php
Role: Class source
Content type: text/plain
Description: Class File
Class: MySQL Wrapper Class 2
MySQL database access wrapper
Author: By
Last change: date and version
Date: 3 years ago
Size: 8,428 bytes
 

Contents

Class file image Download
<?php

/** 
*    MySQL Wrapper Class 
*
* @author Roy Toledo <toledoroy at hotmail dot com> 
* @package DB 
* @license GNU General Public License
* @version 3
* @date 2011-04-12
* @uses Constatns DBHost, DBUser, DBPassword, DBDefaultDatabase
* @todo Use Exeptions
*/

class dbWrapper
{
    protected 
$host        DBHost;
    protected 
$user     DBUser;
    protected 
$pass        DBPassword;
    protected 
$dbname    DBDefaultDatabase;
    protected 
$link;
    private 
$result;
    private 
$sql;
    private 
$rollback    false;
    public 
$debug         false;
    
      
         
    function 
__construct()
    {
        
$this->connect();
        
mysql_set_charset('utf8',$this->link); 
        
$this->set_db($this->dbname);
        return 
$this->link;
    }
    
    private function 
connect()
    {
        
$this->link mysql_connect($this->host,$this->user,$this->pass,true) or die ("DB Connection Failed:<br />".$this->ReportError());
    }
    
    public function 
set_db($value)
    {
        if (
mysql_select_db($value,$this->link)){
            return 
true;
        }else{
            
$this->ReportError();
        }
    }
    
    public function 
getResult()
    {
        return 
$this->result;
    }
    
/**
    * Check If Results Recieved From Last Query 
    * @return false, or Number Of Records int
    */
    
public function hasResults()
    {
        if (
$this->result && mysql_num_rows($this->result) > 0)
            return 
mysql_num_rows($this->result);
        else
            return 
false;
    }
    
    
/**
    * Handle DB Errors 
    */
    
private function ReportError($message '')
    {
        
$errNum  mysql_errno($this->link);
        
$errText mysql_error($this->link);
        
        
//Handle Specific Errors: 
        //if ($errNum == 2006) exit("Database Not Available, Please Try Again Later");
    
        //Prepare The Error Message:
        
$ERR_message $_SERVER['PHP_SELF'].sprintf("DB Error,\n (%s): %s<p>"$errNum$errText);
        if (
$message != ''){
            
$ERR_message .= $message;
        }
        
        
//Take Action
        
if ($this->debug) {
            echo(
$ERR_message);
        }else{
            
error_log($ERR_message,0);
        }
        
//throw new Exception($ERR_message);
    
}
    
    
/**
    * Run SQL Query 
    * @return Mysql Result Handler
    * @param $value Query String
    */
    
public function query($value)
    {
        
$this->sql $value;
        if (!
$this->result mysql_query($value,$this->link)) {
            
$this->rollback true ;
            
$this->ReportError();
            return 
false;
        }else{
            return 
$this->result;
        }
    }
    
    
/**
    * Run SQL One Row Query 
    * @return Array
    * @param $sql Query String
    */
    
public function queryRow($sql)    //Returns One Row as an Array
    
{
        
$this->sql $sql;
        
$result $this->query($sql);
        if (
$result)
            
$row mysql_fetch_array($result,MYSQL_ASSOC);
        else
            
$row false;
        return 
$row;
    }
    
    
/**
    * Select All Table Rows
    * @param string $table_name Table Name
    * @param string $where WHERE Statement
    */
    
public function selectTable($table_name,$where 1)
    {
        
$query "SELECT * FROM $table_name WHERE $where;";
        return 
$this->query($query);
    }
    
    
/**
     * Get Enum Colum's Values By Column's Name 
     * @param string $table
     * @param string $field
     */
    
public function getEnumValues($table,$field)
    {
        if (
$result $this->query("SHOW COLUMNS FROM $table LIKE '$field' ",$this->link)) {
            while (
$table mysql_fetch_array($this->result)){
                
$optionsexplode(","preg_replace("/^enum\(|'|\)/i"""$table[Type]));
            }
            return 
$options;
        }else{ 
$this->ReportError(); return false; }
    }
    
    
/**
    * Get Query Row Result 
    * @return Array
    */
    
public function getRow()
    {
        if (
$this->result)
            
$row mysql_fetch_array($this->result,MYSQL_ASSOC);
        else
            
$row false;
        return 
$row;    
    }
    
    
/**
    * Get Last Insert ID 
    * @return Last Insert PKey
    */
    
public function getInsertId()
    {
        return 
mysql_insert_id($this->link);
    }
    
    
/***** MySQL Transactions *****/
    
    /**
     * Begin Transaction
     */
    
public function begin()
    {
         
$this->rollback false;
         
$this->query("BEGIN");
         if (
$this->debug) echo "<br /><font color='blue'>Mysql begin</font><br />";
    }
    
    
/**
     * Commit Transaction (If Successful)
     */
    
public function commit()
    {
        if (
$this->rollback == false) {
            
$this->query("COMMIT");
            if (
$this->debug) echo "<br /><font color='blue'>Mysql commit</font><br />";
            return 
true;
        }else{
             
$this->rollback();
             if (
$this->debug) echo "<br /><font color='red'>Mysql rollback</font><br />";
             return 
false;
        }
    }
    
    
/**
     * Rollback Transaction
     */
    
public function rollback()
    {
        
$this->query("ROLLBACK");
        
$this->rollback false;
        if (
$this->debug) echo "<br /><font color='red'>Mysql Rollback</font><br />";
    }
    
    
/**
    * Move Pointer To Resorce Begining
    */
    
public function reset()
    {
        @
mysql_data_seek($this->result,0);        //Move Pointer To Resorce Begining
    

    
    
/**
    * Get Results In a 3D Array
    * @return 3d Array
    */
    
public function get3DArray()
    {
        while (
$row mysql_fetch_array($this->result)){
            
$result3d[] = $row;
        }
        return 
$result3d
    }
    
    
/**
    * Prepare Values For Query  
    * @param $value string Single Value To Be Processed
    * @return $value string Processed Value
    */
    
private function prepare_sql_data_string($value)
    {
        
/*
        if(get_magic_quotes_runtime()) $string = stripslashes($string);
        return @mysql_real_escape_string($string,$this->link_id);
        */
        
if ($value != ""){
            
$exceptions = array('null','now()');
            if (!
in_array(strtolower($value),$exceptions)){
                
//$value = mysql_escape_string($value);
                
$value str_replace("'","`",$value);
                
$value "'".$value."'";
            }
            return 
$value;
        }else return 
"''";    
    }
    
    
/**
    * Update a Table 
    * @param array $valuesArray Update Values as name=>value
    * @param string $table Table Name
    * @param string $pKey Table Private Key
    * @return bool
    */
    
public function update(array $valuesArray,$table,$pKey='id'// Recives colom name as array key and row value as array value (updates single table via PKey)
    
{
    
// Build Update Query
        
foreach( $valuesArray as $key => $value) {
            
$value trim($value);
            if (
$key == $pKey) {
                
$where "$pKey = ".$this->prepare_sql_data_string($value);
            }elseif (
$value != ""){
                
$sql_update[] = "`$key` = ".$this->prepare_sql_data_string($value);
            }
        }
        
$set implode(",",$sql_update);
        
$query "UPDATE $table SET $set WHERE $where";
        
$this->sql $query;
        if (
$this->debug) echo "SQL: ".$query;
    
// Run Query
        
if ($this->query($query))
            return 
true;
        else {
            
$this->ReportError();
            return 
false;
        }
    }
    
    
/**
    * Insert Values To Table 
    * @param array $valuesArray Insert Values as name=>value Array
    * @param string $table Table Name
    * @return bool
    */
    
public function insert(array $valuesArray,$table// Recives colom name as array key and row value as array value
    
{
        
$i=0;
    
// Build Insert Query
        
foreach($valuesArray as $key => $value) {
            
$value trim($value);
            if (
$value !== ""){
                
$sql_keys[$i] = $key;
                
$sql_values[$i] = $this->prepare_sql_data_string($value);
                
$i++;
            }
        }
        
$q_keys implode(",",$sql_keys);
        
$q_values implode(",",$sql_values);
        
$query "INSERT INTO $table ($q_keys) VALUES ($q_values)";
        if (
$this->debug) echo "SQL: ".$query;                       
    
// Run query
        
if($this->query($query)){
            return 
true;
        }else{
            
$this->ReportError();
            return 
false;
        }
    }
    
    
/**
    * Replace Values in Table 
    * @param array $valuesArray, Update Values as name=>value Array
    * @param string $table Table Name 
    * @return bool
    */
    
public function replace($valuesArray,$table// Recives colom name as array key and row value as array value
    
{
        
$i=0;
    
// Build Insert Query
        
foreach($valuesArray as $key => $value) {
            
$value trim($value);
            if (
$value !== ""){
                
$sql_keys[$i] = $key;
                
$sql_values[$i] = $this->prepare_sql_data_string($value);
                
$i++;
            }
        }
        
$q_keys implode(",",$sql_keys);
        
$q_values implode(",",$sql_values);
        
$query "REPLACE INTO $table ($q_keys) VALUES ($q_values)";
        if (
$this->debug) echo "SQL: ".$query;                       
    
// Run query
        
return $this->query($query);
    }
    
    
/**
     * Copy Complete Table
     * @param unknown_type $tableName
     */
    
public function backupTable($tableName)
    {    
        
$newName $tableName."_".date("dmy");;
        
$sql "CREATE TABLE `$newName` SELECT * FROM `$tableName` ";
        
$this->query($sql);
    }

}