<?php
 
 
require_once('DESTRUCTOR.php');
 
 
/**
 
 * Controls all functionality for database communications.
 
 * Copyright (C) 2005 - Bryan Smith
 
 */
 
class MYSQL_DATABASE extends DESTRUCTOR
 
{
 
    /**
 
     * MySQL Database Object
 
     *
 
     * @var Object
 
     */
 
    var $DataBase_;
 
    /**
 
     * SQL Query provided by user
 
     *
 
     * @var String
 
     */
 
    var $Query_;
 
    /**
 
     * Entire Result Set
 
     *
 
     * @var Array
 
     */
 
    var $Results_ = array();
 
    
 
    /**
 
     * Creates connection to database
 
     *
 
     * @param String $Server
 
     * @param String $Name
 
     * @param String $User
 
     * @param String $Password
 
     * @return DATABASE
 
     */
 
    function MYSQL_DATABASE($Server = 'localhost', $Name = 'root', $User = 'sa', $Password)
 
    {
 
        // Must call for destructor to work.
 
        parent::DESTRUCTOR();
 
        
 
        $this->DataBase_ = mysql_connect($Server, $User, $Password);
 
        if (!mysql_select_db($Name, $this->DataBase_))
 
            die(mysql_error());
 
    }
 
    
 
    /**
 
     * Executes query and builds array of repsonse.
 
     *
 
     * @param String $SQL
 
     * @param Int $Results
 
     */
 
    function Query($SQL, $Results = MYSQL_ASSOC)
 
    {
 
        // Clear out old array before populating new results.
 
        $this->Query_ = null;
 
        $this->Query_ = mysql_query($SQL);
 
        $this->GetResults_($Results);
 
        mysql_free_result($this->Query_);
 
    }
 
    
 
    /**
 
     * Retrieves a single result record from the MySQL response.
 
     *
 
     * @param Int $Results
 
     * @return Array
 
     */
 
    function GetResult($Results = null)
 
    {
 
        return mysql_fetch_array($this->Query_, $Results);
 
    }
 
    
 
    /**
 
     * Builds an array of all rows from the MySQL response.
 
     *
 
     * @param unknown_type $Results
 
     */
 
    function GetResults_($Results = null)
 
    {
 
        if (!$this->Query_)
 
            die (mysql_error());
 
        
 
        while ($ThisRow = $this->GetResult($Results))
 
            $this->Results_[] = $ThisRow;
 
    }
 
    
 
    /**
 
     * Returns an entire record based on array index.
 
     *
 
     * @param Int $Index
 
     * @return Object
 
     */
 
    function GetRecord($Index)
 
    {
 
        return new DATABASE_RECORD($Index, $this);
 
    }
 
    
 
    /**
 
     * Retrives a value specified by array index and associative key.
 
     *
 
     * @param Int $Index
 
     * @param String $Key
 
     * @param String $Default
 
     * @return String
 
     */
 
    function GetField($Index, $Key, $Default = null)
 
    {
 
        if (!empty($this->Results_[$Index][$Key]))
 
            return trim($this->Results_[$Index][$Key]);
 
        elseif (!empty($this->Results_[0][$Key]))
 
            return trim($this->Results_[0][$Key]);
 
        else
 
            return $Default;
 
    }
 
    
 
    /**
 
     * Close MySQL data connection.
 
     *
 
     */
 
    function __destructor()
 
    {
 
        mysql_close($this->DataBase_);
 
        echo 'HEY!';
 
    }
 
}
 
 
/**
 
 * Retrieves entire row from DATABASE
 
 *
 
 */
 
class DATABASE_RECORD
 
{
 
    var $Index_;
 
    var $Data_;
 
    
 
    /**
 
     * Assigns DATABASE reference to current object.
 
     *
 
     * @param Int $Index
 
     * @param Object $Data
 
     * @return DATABASE_RECORD
 
     */
 
    function DATABASE_RECORD($Index, &$Data)
 
    {
 
        $this->Index_ = $Index;
 
        $this->Data_ = $Data;
 
    }
 
    
 
    /**
 
     * Retrives a single field by key.
 
     *
 
     * @param String $Key
 
     * @param String $Default
 
     * @return String
 
     */
 
    function GetField($Key, $Default = null)
 
    {
 
        return $this->Data_->GetField($this->Index_, $Key, $Default);
 
    }
 
}
 
 
$DataBase = new MQSL_DATABASE(DB_SERVER, DB_NAME, DB_USER, DB_PASSWORD);
 
?>
 
 |