$config =
array(
//Database Connections
"db_host" =>
"localhost",
"db_user" =>
"######",
"db_password" =>
"######",
"db_database" =>
"######",
"dev" =>
true,
//true=don't send emails, print to screen, false=don't print to screen, send emails
//Admin Stuff
"admin_email" =>
"Your email here"
);
<?php
class mysql{
var $queryCounter =
0;
var $totalTime =
0;
function mysql(){
global $config;
$host =
$config['db_host'];
$db_user =
$config['db_user'];
$db_pass =
$config['db_password'];
$db =
$config['db_database'];
$startTime =
$this->
getMicroTime();
mysql_connect($host,
$db_user,
$db_pass) or
die("Could not connect to database");
mysql_select_db($db) or
die("Could not select database ".
$db);
$this->
totalTime +=
$this->
getMicroTime() -
$startTime;
}
//Executes and returns a query
function query
($sql) {
$startTime =
$this->
getMicroTime();
++
$this->
queryCounter;
$result =
mysql_query($sql);
if (mysql_error()) {
$this->
mailError($sql,
mysql_error(),
mysql_errno());
return $this->
error("<br />There was a SQL error and it has been reported. Sorry for the inconvience.<br />");
}
$this->
totalTime +=
$this->
getMicroTime() -
$startTime;
return $result;
}
//Fetch array Query MySQL Database
function fetch
($result) {
$rows =
mysql_fetch_array($result);
return $rows;
}
//Fetch array Query MySQL Database
function fetch2
($result) {
$rows =
mysql_fetch_array($result, MYSQL_ASSOC
);
return $rows;
}
function fetchO
($result) {
$row =
mysql_fetch_object($result);
return $row;
}
function fetchRow
($result) {
$rows =
mysql_fetch_row($result);
return $rows;
}
//Count the number of rows in query
function numRows
($result) {
$count =
mysql_num_rows($result);
return $count;
}
//Run query and count the number of rows in query
function numRowsQ
($sql) {
$result =
$this->
query($sql);
$count =
mysql_num_rows($result);
return $count;
}
// Returns only one column
function fetchOneCol
($sql,
$arr=
0) {
$result =
$this->
query($sql);
$return =
$this->
fetch($result);
$return =
$return[$arr];
return $return;
}
// Find number of fields names in a query
function numFields
($result) {
$fields =
mysql_num_fields($result);
return $fields;
}
// find single field name
function fieldName
($result,
$fNum) {
$name =
mysql_field_name($result,
$fNum);
return $name;
}
//Get affected rows
function getAffectedRows
()
{
return mysql_affected_rows();
}
//Get last insert id
function getInsertId
(){
return mysql_insert_id();
}
####################################################
# Time/Count Functions
####################################################
function getDBTime
($dec=
6){
$time =
number_format(round($this->
totalTime,
$dec),
$dec);
return $time;
}
function getSqlCount
(){
return $this->
queryCounter;
}
function getMicroTime
() {
list($usec,
$sec) =
explode(" ",
microtime());
return ((float
)$usec +
(float
)$sec);
}
function showSQLStats
($dec=
6){
$stats =
$this->
getSqlCount();
$stats !=
1 ?
$stats .=
" queries took " :
$stats .=
" query took ";
$stats .=
$this->
getDBTime($dec) .
" seconds to execute";
return $stats;
}
####################################################
# Error Handling
####################################################
// Sends an email to the admin on an error
function mailError
($sql,
$error,
$errorNo) {
global $config;
if ($config['dev']){
print $sql .
"<br /><br />" .
$error .
"<br /><br />" .
$errorNo .
"<br /><br />";
}else {
mail($config['admin_email'],
"SQL Error on ".
$config['site_name'],
$sql .
"\n\n Error Msg: " .
$error .
"\n\n Error Number: " .
$errorNo .
"\n\n Page: " .
$_SERVER['REQUEST_URI'],
"From: " .
$config['admin_email']);
}
}
// error function
function error
($msg) {
print $msg;
die();
}
}
?>
<?php
require_once "config.php";
require_once "class.mysql.php";
$db =
new mysql();
//Just make a standard query and put it into a result
$select =
"SELECT * FROM users";
$result =
$db->
query($select);
//Get a row count from result
$count =
$db->
numRows($result);
//Loop through query
while($row =
$db->
fetch($result)){
$username =
$row['username'];
$fullname =
$row['fullname'];
echo "$username - $fullname <br />";
}
//get just the count of a query
$select =
"SELECT * FROM users";
$count =
$db->
numRowsQ($select);
//Just fetch on column
$select =
"SELECT name FROM users WHERE userid = 1";
$name =
$db->
fetchOneCol($select);
//Get last inserted ID
$insert =
"INSERT INTO users (username, password) VALUES ('test','test')";
$db->
query($insert);
$userid =
$db->
getInsertId($insert);
//at the bottom of the page show how many queries were executed and how log it took...you can also put a decimal place in (default is 6)
echo $db->
showSQLStats();
//default 6 decimal places
echo $db->
showSQLStats(2);
//2 decimal places
/*
Error reporting:
"dev" => true,
This will print the sql query, error number, and message to the screen
"dev" => false,
This will print "There was a SQL error and it has been reported. Sorry for the inconvience." only to the screen. An email will get sent to "admin_email" => "Your email here" with the sql query, error number, and the page that had the error on it so you can go back and check it out yourself.
*/
?>