Version: 1

Type: Class

Category: Databases

License: GNU General Public License

Description: Easy to use mysql class that has basic database access with error checking.



<?php

/*

This class holds all the functions needed for basic mysql database access.

functions within this class are.

    the constructor. mysql_dbase which is called with database name, hostname, username, and password. or they can be set to be defaults, The dbname default has to be left as test for internal reasons. this means when creating a new instance of this class the minimum call is normally: $inst=new mysql_dbase("dbname"); unless you are creating a database. in which you can leave the name blank.

All functions will halt processing and display an error message in the browser on a fault in any of the commands.

    connect()			: no options just creates the connection 
 				  to the database.
    use_db(name)		: Change the current database to the one named.
    make_db(name)		: Creates a new database with the given name.
    drop_db(name)		: Drops the database with the given name.
				  Note: this function does not seek confirmation
				  and is none recoverable.
    do_query(query)		: Performs the given query and will return the
				  number of rows affected or returned for each
				  query.
    get_data(type)		: Returns an array of data base on the type
     				  supplied. A is associative, N is numeric, or
				  B for both.
    close_db() 			: Closes the database connection.

*/

class mysql_dbase
{
    var $dbname;		// name of database to connect to
    var $hostname;		// Host name of the database
    var $uname;			// Username to connect with
    var $pword;			// password to use
    var $conn;			// Used internally to track a connection
    var $result;   		// Used internally to track a query

    function mysql_dbase($dbname="test", $hostname="localhost", $username="nobody", $password="password") 
    {
	$this->dbname=$dbname;
        $this->hostname=$hostname;
        $this->uname=$username;
        $this->pword=$password;
    } 

    function connect()
    {
        $this->conn=mysql_connect($this->hostname, $this->uname, $this->pword);
        if ( !$this->conn )
        {
	    echo "<BR>\nConnection to database ".$dbname." has failed.<P>\n";
            mysql_error();
            exit;
        }

        if ( $this->dbname != "test" )
        {
            $result=mysql_select_db($this->dbname, $this->conn);
            if ( !$result )
            {
                echo "Failed to select database ".$this->dbname."<P>\n";
                echo mysql_error();
                exit;
            }
        }

    }

    function use_db($dbname) 
    {
	if ( $dbname == "" )
	{
	    echo "ERROR : No database name supplied to use_db";
	    exit;
	}
        $result=mysql_select_db($dbname, $this->conn);
        if ( !$result )
        {
	    echo "Failed to select database ".$dbname."<P>\n";
	    echo mysql_error();
	    exit;
        }
        $this->dbname=$dbname;
    }

    function make_db($dbname)
    {
	if ( $dbname == "" )
	{
	    echo "ERROR : No database name supplied to make_db";
	    exit;
	}
	$result=mysql_create_db($dbname, $this->conn);
	if ( !$result )
	{
	    echo "Failed to create database ".$this->dbname."<P>\n";
	    echo mysql_error();
	    exit;
	    
	}
	$this->dbname=$dbname;
	$result=mysql_select_db($this->dbname, $this->conn);
	if ( !$result )
	{
	    echo "Failed to select database ".$this->dbname."<P>\n";
	    echo mysql_error();
	    exit;
	}
	return(1);
    }

    function drop_db($dbname)
    {
	if ( $dbname == "" )
	{
	    echo "ERROR : No database name supplied to drop_db";
	    exit;
	}
	$result=mysql_drop_db($dbname, $this->conn);
	if ( !$result )
	{
	    echo "Failed to drop database ".$dbname."<P>\n";
	    echo mysql_error();
	    exit;
	    
	}
	return(1);
    }

    function do_query($query, $num="n")
    {
	 if ( $query == "" )
	 {
	     echo "ERROR : No query supplied to do_query";
	     exit;
	 }
         $this->result=mysql_query($query, $this->conn);
         if ( !$this->result )
         {
             echo "Query ".$query." on database ".$this->dbname." has failed<P>\n";
	     echo mysql_error();
             exit;
         }      
         $retval=0;  
	 if ( (stristr($query, "delete")) || (stristr($query, "insert")) || (stristr($query, "update")) )
         {
             $retval=mysql_affected_rows($this->conn);
         }
         else
         {
	     $retval=mysql_num_rows($this->result);
         } 
	 return($retval);
    }

    function get_data($type="B")
    {
        if ( $type == "A" )
        {
	    $fields=mysql_fetch_array($this->result, MYSQL_ASSOC);
        }
        elseif ( $type == "N" )
        {
 	    $fields=mysql_fetch_array($this->result, MYSQL_NUM);
        }
        else
        {
	    $fields=mysql_fetch_array($this->result);
        }
        return($fields);
    }

    function close_db()
    {
        $result=mysql_close($this->conn);
        if ( !$result )
        {
            echo "Failed to close database - ".$this->dbname."<P>\n";
	    echo mysql_error();
        }
    }
}

?>