<?php
/*
Version 1.2 - mysqli version - include this file instead of class.db.php if you want to use mysqli to connect
*/
/*
* 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
*
*
* example usage:
*
* 1) create a file called inc.config.php in it throw this:
* // include the class:
* include_once('class.db.mysqli.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->r($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
*/
// MYSQLi VERSION!!!!
class mydb
{
var $connect; // stores our db connection
var $db_user, $db_pass, $db_host, $db_name;
var $contype;
function mydb($db_host, $db_user, $db_pass, $db_name)
{
// connect:
$this->db_user = $db_user;
$this->db_pass = $db_pass;
$this->db_host = $db_host;
$this->db_name = $db_name;
$this->contype = 0;
$this->connect();
} // CONSTRUCTOR
/* BEGIN DATABASE FUNCTIONS */
function connect()
{
if($this->is_connected()) // check for open connection
return true; // connection exists :: bail
// connect to our database
/*
$this->connect =
mysqli_connect(
$this->db_host ,
$this->db_user ,
$this->db_pass,
$this->db_name
);
*/
switch($this->contype)
{
case 1: ###################################### Persistent Connection:
$this->connect =
mysqli_pconnect($this->host, $this->user, $this->pass)
or
die(mysql_error()."<div>error connecting [persistent]</div>\r\n");
break;
/*
case 2:####################### Persistent Connection with Compression:
$this->connect =
mysqli_real_connect (
$this->db_host,
$this->db_user,
$this->db_pass,
$this->db_name,
MYSQL_CLIENT_COMPRESS
)
or
die(mysql_error()."<div>error connecting [persistent-compress]</div>\r\n");
break;
case 3: ######################### Regular Connection with Compression:
$this->connect =
mysqli_real_connect (
$this->db_host,
$this->db_user,
$this->db_pass,
$this->db_name,
MYSQL_CLIENT_COMPRESS
)
or
die(mysql_error()."<div>error connecting [compress]</div>\r\n");
break;
*/
default: #################################### Regular Connection:
$this->connect =
mysqli_connect(
$this->db_host ,
$this->db_user ,
$this->db_pass,
$this->db_name
)
or
die(mysql_error()."<div>error connecting [default]</div>\r\n");
break;
}
return true;
} // $this->connect();
function close()
{
if($this->is_connected())
{
@mysql_close($this->connect);
$this->connect = false;
return 1;
}
} // $this->close();
function is_connected()
{
if( isset($this->connect) && !empty($this->connect) )
return true;
} // $this->is_connected();
function set_contype($contype=0)
{
$oldtype = $this->contype;
if($contype > 0 && $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();
}
}
} // $this->set_contype($contype=0);
function q($sql) // inserts - updates
{
$q = mysqli_query($this->connect, $sql);
return $q; // returns an id if an insert
} // $this->q($sql);
function get($sql) // selects
{
$q = mysqli_query($this->connect, $sql);
$uData = false;
do //show admin options
{
if(is_array($uData))
$tarray[] = $uData;
} while($uData = mysqli_fetch_assoc($q));
if(!empty($tarray) && is_array($tarray))
return $tarray;
} // $this->get($sql);
function r($sql) // selects with only one result
{
$q = mysqli_query($this->connect, $sql);
$uData = false;
do //show admin options
{
if(is_array($uData))
return $uData;
} while($uData = mysqli_fetch_assoc($q));
} // $this->r($sql);
function flush_buffers()
{
ob_end_flush();
ob_flush();
flush();
ob_start();
} // $this->flush_buffers();
// 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;
} // $this->safe_text($text);
// will take the javascript out of your text
function remove_js($text)
{
return preg_replace("/<script[^>]*>.*?< *script[^>]*>/i", "", $text);
} // $this->remove_js($text);
// will take the html out of your text
function remove_html($text)
{
return strip_tags($text);
} // $this->remove_html($text);
// batch functions [ return SQL ]
## EXAMPLE UPDATE ##
/*
global $db;
$table = 'tblorderpcs';
$extra = "WHERE jID = $subjobid LIMIT 1";
$arr = array (
"pcs_name" => $sname,
"pcs_qty" => $sqty,
"pcs_pn" => $spn,
"pcs_estimate" => $sest,
"pcs_memo" => $smemo,
"ship_id" => $ship_id,
"pcs_made" => $smade,
"pcs_wasted"=> $swasted,
"pcs_ppu" => $sppu
);
return $db->update_from_array($table, $arr, $extra);
*/
function update_from_array_sql($table, $arr, $extra)
{
if(!is_array($arr) || empty($table))
return false;
$first = true;
$sql = "UPDATE $table SET ";
foreach($arr as $key => $value)
{
if(!$first)
$sql .= ",";
$sql .= $key."="."'$value' ";
$first = false;
}
$sql .= $extra;
return $sql;
} // $this->update_from_array_sql($table, $arr, $extra);
function update_from_array($table, $arr, $extra)
{
$sql = $this->update_from_array_sql($table, $arr, $extra);
return $this->q($sql);
} // $this->update_from_array($table, $arr, $extra);
function insert_from_array_of_arrays_sql($table, $arrarr) // ex: $arr[0] = array('id' => 5, 'name' => 'bob');
{
if(!is_array($arrarr) || empty($table))
return false;
$key_str = '';
$val_str = '';
$sql_start = "\r\nINSERT INTO $table ( ";
$sql_mid = " ) VALUES ";
$sql_end = " ; \r\n";
$arrarrfirst = true;
$arrarrvalstr = '';
foreach($arrarr as $arrarrkey => $arr)
{
$val_str = '';
$first = true; // for sub array navigation
if(!$arrarrfirst)
$val_str .= ',';
$val_str = '(';
foreach($arr as $key => $value)
{
if(!$first)
{
if($arrarrfirst) // just want key string built off first entry //
$key_str .= ",";
$val_str .= ",";
}
if($arrarrfirst) // just want key string built off first entry //
$key_str .= "$key";
$val_str .= "'$value'";
$first = false;
}
$val_str .= ')';
if(!$arrarrfirst)
$arrarrvalstr .= ", \r\n";
$arrarrvalstr .= $val_str;
$arrarrfirst = false;
}
$sql = $sql_start.$key_str.$sql_mid.$arrarrvalstr.$sql_end;
return $sql;
} // $this->insert_from_array_of_arrays_sql($table, $arrarr);
function insert_from_array_of_arrays($table, $arrarr) // ex: $arr[0] = array('id' => 5, 'name' => 'bob');
{
$sql = $this->insert_from_array_of_arrays_sql($table, $arrarr);
$id = $this->q($sql);
} // $this->insert_from_array_of_arrays($table, $arrarr); // ex: $arr[0] = array('id' => 5, 'name' => 'bob');
## EXAMPLE INSERT ##
/*
global $db;
$time = time();
$table = 'tblorderpcs';
$arr = array (
"order_id" => $jobid,
"pcs_name" => $sname,
"pcs_qty" => $sqty,
"pcs_pn" => $spn,
"pcs_estimate" => $sest,
"pcs_memo" => $smemo,
"ship_id" => $ship_id,
"pcs_tstamp" => $time
);
return $db->insert_from_array($table, $arr);
*/
function insert_from_array_sql($table, $arr)
{
if(!is_array($arr) || empty($table))
return false;
$key_str = '';
$val_str = '';
$sql_start = "\r\nINSERT INTO $table ( ";
$sql_mid = " ) VALUES ( ";
$sql_end = " ); \r\n";
$first = true;
foreach($arr as $key => $value)
{
if(!$first)
{
$key_str .= ",";
$val_str .= ",";
}
$key_str .= "$key";
$val_str .= "'$value'";
$first = false;
}
$sql = $sql_start.$key_str.$sql_mid.$val_str.$sql_end;
return $sql;
} // $this->insert_from_array_sql($table, $arr);
function insert_from_array($table, $arr)
{
$id = $this->q( $this->insert_from_array_sql($table, $arr) );
return $id;
} // $this->insert_from_array($table, $arr);
function table_exists($table)
{
if(!$this->is_connected())
$this->connect();
$sql = 'SHOW TABLES FROM `'.$this->db_name.'` LIKE \''.$table.'\' ';
// echo "<div>".$sql."</div>";
$row = $this->r($sql);
if(is_array($row))
return true;
}
// BEGIN -> compatibility functions
function query($sql) { return $this->q($sql); }
function query_return($sql) { return $this->get($sql); }
function row($sql) { return $this->r($sql); }
// END -> compatibility functions
} // end class mydb (mysqli version)
?>
|