Login   Register  
PHP Classes
elePHPant
Icontem

File: class.db.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of JImmy Bo  >  Bobo PHP DB Class  >  class.db.php  
File: class.db.php
Role: Class source
Content type: text/plain
Description: The class file for Bobo's PHP DB Class
Class: Bobo PHP DB Class
Simple MySQL database class
 

Contents

Class file image Download
<?php


/* Version 1.1
 * Please leave this comment in at the top of the script if you use this script
 * in it's entirety. That is my only request. Other then that have fun.
 * http://www.phpclasses.org/package/5283-PHP-Simple-MySQL-database-access-wrapper.html
 *
 * I've often wondered why the database classes out there were really a little 
 * cumbersome to work with. For me I value simplicity and power and have been
 * working on this little gem now for about 6 years with little tweaks here
 * and little tweaks there. I wasn't about to pack it with a gazillion features
 * but more just to kill off redundancy in my code.
 * 
 * example usage:
 *
 *  1) create a file called inc.config.php in it throw this:
 *      // include the class:
 *      include_once('class.db.php');
 *     // set the variables:
 *      $db_host = "localhost";
 *      $db_user = "myusername";
 *      $db_pass = "mypassword";
 *      $db_name = "mydatabasename";
 *     // make a db object:
 *      $db = new mydb($db_host, $db_user, $db_pass, $db_name);
 * 
 *  2) now in your file that you want to access the db from just include_once('inc.config.php');
 *     don't worry it won't connect till it's first query and it does so automagically.
 *
 *  3) some example usage:
 *      // an insert
 *       $SQL = "INSERT INTO addressbook (name) VALUES ('bob')";
 *       $insertid = $db->q($SQL); // returns false if no insertid or the id
 *       echo $insertid;
 *
 *      // a single row returned
 *       $SQL = "SELECT * FROM addressbook WHERE name LIKE 'bob' LIMIT 1";
 *       $row = $db->row($SQL);
 *       echo $row['name'];
 *
 *      // multiple rows returned
 *       $SQL = "SELECT * FROM addressbook";
 *       $addresses = $db->get($SQL);
 *       foreach($addresses AS $address)
 *           echo $address['name'];
 * 
 *
 *
 * Also if you're looking for help from me directly you can usually find me
 * slumming it on #phphelp on the undernet irc network.
 * in that case I'd love to still hear from you at my email listed above.
 *
 *
    connection types: (can set on class init [mydb($host,$user,$pass, $db, $contype)])
       or function set_contype($contype=0). If you call set_contype if there is a connection
       present it will reset it.
    -=-=-=-=-=-=-=-=-=-=-
    1: Persistent Connection
    2: Persistent Connection w/compression
    3: Regular Connection w/compression
    0: Regular Connection
    

 */ 


class mydb
{
        var 
$host$user$pass$db_name;
        var 
$contype;
        var 
$dlink;



        function 
mydb($host,$user,$pass$db$contype=0)
        {
                
$this->host $host;
                
$this->user $user;
                
$this->pass $pass;
                
$this->db_name $db;
                
$this->contype $contype;
        }
        
        function 
is_connected()
        {
                if(!isset(
$this->dlink) || empty($this->dlink))
                        return 
false;
                else
                        return 
true;
        }
        
        function 
connect()
        {
            if(
$this->is_connected()) // check for open connection
                    
return 0// connection exists :: bail


            
switch($this->contype)
            {
                    case 
1######################################  Persistent Connection:
                        
$this->dlink 
                        
mysql_pconnect($this->host$this->user$this->pass
                        or 
                        die(
mysql_error()."<hr /> :: in class db : 1-1");
                    break;


                    case 
2:####################### Persistent Connection with Compression:
                        
$this->dlink 
                            
mysql_pconnect
                            
($this->host,$this->user$this->pass,MYSQL_CLIENT_COMPRESS
                            or 
                            die(
mysql_error()."<hr /> :: in class db : 1-2");
                    break;


                    case 
3######################### Regular Connection with Compression:
                        
$this->dlink 
                            
mysql_connect($this->host$this->user$this->pass,
                            
MYSQL_CLIENT_COMPRESS
                            or 
                            die(
mysql_error()."<hr /> :: in class db : 1-3");
                    break;


                    default: 
#################################### Regular Connection:
                        
$this->dlink 
                            
mysql_connect($this->host$this->user$this->pass
                            or 
                            die(
mysql_error()."<hr /> :: in class db : 1-0");
                    break;
            }

            
mysql_select_db($this->db_name) or die(mysql_error()."<hr /> :: in class db : 2");
            return 
1;
        }


        function 
set_contype($contype=0)
        {
            
$oldtype $this->contype;
            if(
$contype && $contype 4$this->contype $contype; else $this->contype 0
            
// check if there is a difference between the old connection type
            // and the new connection type. Then check to see if there is a connection
            // open and if so then close and reopen it.
            
if($oldtype != $this->contype)
            {
                if(
$this->is_connected())
                {
                        
$db->close();
                        
$db->connect();
                }
            }
        }


        function 
close()
        {
            if(
$this->is_connected())
            {
                @
mysql_close($this->dlink);
                
$this->dlink "";
                return 
1;
            }
        }


        function 
query($sql)
        {
            if(!
$this->is_connected()) $this->connect();
                    
            
mysql_query($sql) or 
                die(
mysql_error()."<hr /><pre>$sql</pre><hr /> :: in class db : 3");
            return 
mysql_insert_id();
        }
        
        function 
query_return($sql)
        {
            if(!
$this->is_connected()) $this->connect();

            
$tempresult mysql_query($sql) or 
                die(
mysql_error()."<hr /><pre>$sql</pre><hr /> :: in class db : 4");

            while (
$row mysql_fetch_array($tempresultMYSQL_ASSOC))
                
$result[] = $row;

            
mysql_free_result($tempresult);
            return @
$result;
        }    
        
        function 
table_exists($table)
        {
            if(!
$this->is_connected()) $this->connect();
                            
            
$exists mysql_query('SHOW TABLES FROM `'.$this->db_name.'` LIKE \''.$table.'\'');

            if(
mysql_num_rows($exists) == 1) return true
            else return 
false;
        }
        
        function 
insert_id()
        {
            return 
mysql_insert_id();
        }
        
        
# this will return just the first row of returned data 
        
function row($sql)
        {
            if(!
$DATA $this->get($sql)) return false
            else return 
$DATA[0]; 
        }
        
# ####### BEGIN Cache Writing Magic... 

        
function flush_buffers()
        { 
            
ob_end_flush(); 
            
ob_flush(); 
            
flush(); 
            
ob_start(); 
        } 
    
        
// 2d array to PHP //
        
function rows_to_php($arr$var '$arr')
        {
            
$str '<?php'."\r\n";
            
// takes a simple 2d arr and formats for a flatfile
            
if(is_array($arr))
            {
                foreach(
$arr as $a)
                {
                    if(
is_array($a))
                    {
                        
$count 0;
                        
$str .= $var.'[]=array(';
                        foreach(
$a as $key=>$value)
                        {
                            if(
$count 0)
                                
$str .= ',';
                            
                            
$value str_replace('\"''^{~||~}^'$value);
                            
$value str_replace('"''^{~||~}^'$value);
                            
$value str_replace('^{~||~}^''\"'$value);
                            
                            
$str .= '"'.$key.'"=>"'.$value.'"';
                            
                            
$count++;
                        }
                        
$str .= ');'."\r\n";
                    }
                }
            }
            
$str .= '?>';
            return 
$str;
        }
        
// END 2d array to PHP //

        // 1d array to PHP //
        
function row_to_php($arr$var '$arr')
        {
            
$str '<?php'."\r\n";
            
$a $arr;
            
            
// takes a simple 1d arr and formats for a flatfile
            
if(is_array($a))
            {
                
$count 0;
                
$str .= $var.'[]=array(';
                foreach(
$a as $key=>$value)
                {
                    if(
$count 0)
                        
$str .= ',';
                    
                    
// song and dance... woop de woo...
                    
$value str_replace('\"''^{~||~}^'$value);
                    
$value str_replace('"''^{~||~}^'$value);
                    
$value str_replace('^{~||~}^''\"'$value);
                    
                    
$str .= '"'.$key.'"=>"'.$value.'"';
                    
                    
$count++;
                }
                
$str .= ');'."\r\n";
            }

            
$str .= '?>';
            return 
$str;
        }
        
// END 1d array to PHP //
        
        
        
function row_to_file($cachefile$sql$var$timer)
        {
            
// $var is the array variable name for the cache file... eg) $var = '$users'
            // so in the cachefile it would be $users[] = array (); ... capiche?
            // $timer is in seconds... 
            
$nextupdate = @filemtime($cachefile) + $timer// get current file time + timer time...
            
            // is our data old? if so make it happen
            
if(time() >= $nextupdate || !file_exists($cachefile))
            {
                
$arr     $this->row($sql);
                
$data     $this->row_to_php($arr$var);
                
file_put_contents($cachefile$data);

                @
$this->flush_buffers();
                return 
true;
            }
        }
        

        function 
rows_to_file($cachefile$sql$var$timer)
        {
            
// $var is the array variable name for the cache file... eg) $var = '$users'
            // so in the cachefile it would be $users[] = array (); ... capiche?
            // $timer is in seconds... 
            
$nextupdate = @filemtime($cachefile) + $timer// get current file time + timer time...
            
            // is our data old? if so make it happen
            
if(time() >= $nextupdate || !file_exists($cachefile))
            {
                
$arr     $this->get($sql);
                
$data     $this->rows_to_php($arr$var);
                
file_put_contents($cachefile$data);

                @
$this->flush_buffers();
                return 
true;
            }
        }
        

# ####### END Cache Writing Magic... 
        
        // new aliases ..
        
function q($sql)    { return $this->query($sql); }
        function 
get($sql)    { return $this->query_return($sql); }
        function 
r($sql)    { return $this->row($sql); }

 


       
// yes I'm sure this one can be super duper optimized.
        
function safe_text($text// convert special characters into html escape codes
        
{
                
$text mysql_real_escape_string($text);
                return 
$text;
        }
        
        
// will take the javascript out of your text
        
function remove_js($text)
        {
            return 
preg_replace("/<script[^>]*>.*?< *script[^>]*>/i"""$text);
        }

        
// will take the html out of your text
        
function remove_html($text)
        {
            return 
strip_tags($text);
        }

}


?>