PHP Classes

File: database.class.php

Recommend this page to a friend!
  Classes of Sven Wagener   database class   database.class.php   Download  
File: database.class.php
Role: Class source
Content type: text/plain
Description: The Database Class file
Class: database class
mSQL,MS SQL,MySQL,ODBC,Postgre,Sybase DB Layer
Author: By
Last change: Deleted sending mail in Debug mode.
Date: 14 years ago
Size: 9,659 bytes
 

Contents

Class file image Download
<?php
/**
* Database class
*
* @author Sven Wagener <sven_dot_wagener_at_rheinschmiede_dot_de>
* @copyright Sven Wagener
* @include Funktion:_include_
*/
class database{
    var
$database_types="";
   
    var
$db_connect="";
    var
$db_close="";
    var
$db_select_db="";
    var
$db_query="";
    var
$db_error="";
    var
$db_error_nr="";
    var
$db_fetch_array="";
    var
$db_num_rows="";
   
    var
$host;
    var
$database;
    var
$user;
    var
$password;
    var
$port;
    var
$database_type;
    var
$dsn;
   
    var
$sql;
   
    var
$con; // variable for connection id
   
var $con_string; // variable for connection string
   
var $query_id; // variable for query id
   
   
var $errors; // variable for error messages
   
var $error_count=0; // variable for counting errors
   
var $error_nr;
    var
$error;
   
    var
$debug=false; // debug mode off
   
    /**
    * Constructor of class - Initializes class and connects to the database
    * @param string $database_type the name of the database (ifx=Informix,msql=MiniSQL,mssql=MS SQL,mysql=MySQL,pg=Postgres SQL,sybase=Sybase)
    * @param string $host the host of the database
    * @param string $database the name of the database
    * @param string $user the name of the user for the database
    * @param string $password the passord of the user for the database
    * @desc Constructor of class - Initializes class and connects to the database.
    *
    * You can use this shortcuts for the database type:
    *
    * ifx -> INFORMIX
    * msql -> MiniSQL
    * mssql -> Microsoft SQL Server
    * mysql -> MySQL
    * odbc -> ODBC
    * pg -> Postgres SQL
    * sybase -> Sybase
    */
   
function database($database_type,$host,$database,$user,$password,$port=false,$dsn=false){
       
$database_type=strtolower($database_type);
       
$this->host=$host;
       
$this->database=$database;
       
$this->user=$user;
       
$this->password=$password;
       
$this->port=$port;
       
$this->dsn=$dsn;
       
       
$this->database_types=array("ifx","msql","mssql","mysql","odbc","pg","sybase");
       
       
// Setting database type and connect to database
       
if(in_array($database_type,$this->database_types)){
           
$this->database_type=$database_type;
           
           
$this->db_connect=$this->database_type."_connect";
           
$this->db_close=$this->database_type."_close";
           
$this->db_select_db=$this->database_type."_select_db";
           
            if(
$database_type=="odbc"){
               
$this->db_query=$this->database_type."_exec";
               
$this->db_fetch_array=$this->database_type."_fetch_row";
               
$this->db_error=$this->database_type."_errormsg";
               
            }else{
               
$this->db_query=$this->database_type."_query";
               
$this->db_fetch_array=$this->database_type."_fetch_array";
               
$this->db_error=$this->database_type."_error";
               
$this->db_error_nr=$this->database_type."_errno";
            }
           
           
$this->db_num_rows=$this->database_type."_num_rows";
           
            return
$this->connect();
        }else{
           
$this->halt("Database type not supported");
            return
false;
        }
    }
   
   
/**
    * This function connects the database
    * @return boolean $is_connected Returns true if connection was successful otherwise false
    * @desc This function connects to the database which is set in the constructor
    */
   
function connect(){
       
// Selecting connection function and connecting
       
       
if($this->con==""){
           
// INFORMIX
           
if($this->database_type=="ifx"){
               
$this->con=call_user_func($this->db_connect,$this->database."@".$this->host,$this->user,$this->password);
            }else if(
$this->database_type=="mysql"){
               
// With port
               
if(!$this->port){
                   
$this->con=call_user_func($this->db_connect,$this->host.":".$this->port,$this->user,$this->password);
                }
               
// Without port
               
else{
                   
$this->con=call_user_func($this->db_connect,$this->host,$this->user,$this->password);
                }
               
// mSQL
           
}else if($this->database_type=="msql"){
               
$this->con=call_user_func($this->db_connect,$this->host,$this->user,$this->password);
               
// MS SQL Server
           
}else if($this->database_type=="mssql"){
               
$this->con=call_user_func($this->db_connect,$this->host,$this->user,$this->password);
               
// ODBC
           
}else if($this->database_type=="odbc"){
               
$this->con=call_user_func($this->db_connect,$this->dsn,$this->user,$this->password);
               
// Postgres SQL
           
}else if($this->database_type=="pg"){
               
// With port
               
if(!$this->port){
                   
$this->con=call_user_func($this->db_connect,"host=".$this->host." port=".$this->port." dbname=".$this->database." user=".$this->user." password=".$this->password);
                }
               
// Without port
               
else{
                   
$this->con=call_user_func($this->db_connect,"host=".$this->host." dbname=".$this->database." user=".$this->user." password=".$this->password);
                }
               
// Sybase
           
}else if($this->database_type=="sybase"){
               
$this->con=call_user_func($this->db_connect,$this->host,$this->user,$this->password);
            }
           
            if(!
$this->con){
               
$this->halt("Wrong connection data! Can't establish connection to host.");
                return
false;
            }else{
                if(
$this->database_type!="odbc"){
                    if(!
call_user_func($this->db_select_db,$this->database,$this->con)){
                       
$this->halt("Wrong database data! Can't select database.");
                        return
false;
                    }else{
                        return
true;
                    }
                }
            }
        }else{
           
$this->halt("Already connected to database.");
            return
false;
        }
    }
   
   
/**
    * This function disconnects from the database
    * @desc This function disconnects from the database
    */
   
function disconnect(){
        if(@
call_user_func($this->db_close,$this->con)){
            return
true;
        }else{
           
$this->halt("Not connected yet");
            return
false;
        }
    }
   
   
/**
    * This function starts the sql query
    * @param string $sql_statement the sql statement
    * @return boolean $successfull returns false on errors otherwise true
    * @desc This function disconnects from the database
    */
   
function query($sql_statement){
       
$this->sql=$sql_statement;
        if(
$this->debug){
           
printf("<!-- SQL statement: %s<br />//-->\r\n",$this->sql);
        }
        if(
$this->database_type=="odbc"){
           
// ODBC
           
if(!$this->query_id=call_user_func($this->db_query,$this->con,$this->sql)){
               
$this->halt("No database connection exists or invalid query");
            }else{
                if (!
$this->query_id) {
                   
$this->halt("Invalid SQL Query");
                    return
false;
                }else{
                    return
true;
                }
            }
        }else{
           
// All other databases
           
if(!$this->query_id=call_user_func($this->db_query,$this->sql,$this->con)){
               
$this->halt("No database connection exists or invalid query");
               
            }else{
                if (!
$this->query_id) {
                   
                   
$this->halt("Invalid SQL Query");
                    return
false;
                }else{
                    return
true;
                }
            }
        }
    }
   
   
/**
    * This function returns the last error
    * @return string $error the error as string
    * @desc This function returns the last error
    */
   
function get_error(){
        return
call_user_func($this->db_error,$this->con);
    }
   
   
/**
    * This function returns the last error id
    * @return int $error the error as integer
    * @desc This function returns the last error id
    */
   
function get_error_nr(){
        return
call_user_func($this->db_error_nr,$this->con);
    }
   
   
/**
    * This function returns a row of the resultset
    * @return array $row the row as array or false if there is no more row
    * @desc This function returns a row of the resultset
    */
   
function get_row(){
        if(
$this->database_type=="odbc"){
           
// ODBC database
           
if($row=call_user_func($this->db_fetch_array,$this->query_id)){
               
                for (
$i=1; $i<=odbc_num_fields($this->query_id); $i++) {
                   
$fieldname=odbc_field_name($this->query_id,$i);
                   
$row_array[$fieldname]=odbc_result($this->query_id,$i);
                }
                return
$row_array;
            }else{
                return
false;
            }
        }else{
           
// All other databases
           
$row=call_user_func($this->db_fetch_array,$this->query_id);
            return
$row;
        }
    }
   
   
/**
    * This function returns number of rows in the resultset
    * @return int $row_count the nuber of rows in the resultset
    * @desc This function returns number of rows in the resultset
    */
   
function count_rows(){
       
$row_count=call_user_func($this->db_num_rows,$this->query_id);
        if(
$row_count>=0){
            return
$row_count;
        }else{
           
$this->halt("Can't count rows before query was made");
            return
false;
        }
    }
   
/**
    * This function returns all tables of the database in an array
    * @return array $tables all tables of the database in an array
    * @desc This function returns all tables of the database in an array
    */
   
function get_tables(){
        if(
$this->database_type=="odbc"){
           
// ODBC databases
           
$tablelist=odbc_tables($this->con);
           
            for(
$i=0;odbc_fetch_row($tablelist);$i++) {
               
$tables[$i]=odbc_result($tablelist,3);
            }
            return
$tables;
        }else{
           
// All other databases
           
$tables = "";
           
$sql="SHOW TABLES";
           
$this->query_id($sql);
            for(
$i=0;$data=$this->get_row();$i++){
               
$tables[$i]=$data['Tables_in_'.$this->database];
            }
            return
$tables;
        }
    }
   
   
/**
    * Prints out a error message
    * @param string $message all occurred errors as array
    * @desc Returns all occurred errors
    */
   
function halt($message){
        if(
$this->debug){
           
$this->error_nr=$this->get_error_nr();
           
$this->error=$this->get_error();
                   
           
printf("Error: %s<br />\n", $message);
           
            if(
$this->error_nr!="" && $this->error!=""){
               
printf("Database Error: %s (%s)<br />\n",$this->error_nr,$this->error);
            }
            die (
"Session halted.");
        }
    }
   
   
/**
    * Switches to debug mode
    * @param boolean $switch
    * @desc Switches to debug mode
    */
   
function debug_mode($debug=true){
       
$this->debug=$debug;
    }
   
   
}

?>