Search
Left Quote    A clever person solves a problem. A wise person avoids it.
- Einstein    
Right Quote
 
[login] | [Register]
 

IdealMySQL Class for PHP 5.0

by: Idealws
 

Description:


This is a MySQL class I wrote to use in my programs. It will allow you to do the following: - Connect to a mysql database - Query a mysql database to include * INSERT|DELETE|UPDATE|REPLACE|DROP * SELECT|SHOW|DESCRIBE|EXPLAIN - Catch errors and email them to the admin - Check variables to make sure they only contain particular characters All errors are in the file errors.txt for easy adding and use. The look and feel of the error output to the user is controlled by a style sheet. There is plans to add more to the class at a later date or as needed. If you have any suggestions please let me know. You can download all the file here: http://www.idealws.com/classes/mysql/IdealMySQL.class.zip All of the code is listed below. The only file missing is the image file for the error output the user. This class requires php version 5.0 Class is documented.

Code:
Class File: IdealMySQL.class.php
<?php
// You can change this to show no errors as we
// are collecting and showing them ourself.
error_reporting(0);
/**
* IdealMySQL, MySQL class
*
* This is a MySQL class for Idealws. This will
* be used in all projects that use a MySQL database.
* @author Ray Cuzzart II <ray@idealws.net>
* @version 1.0
* @package Idealws
* @copyright 2007 Idealws - All Right's Reserved
* @example test.php
*/

/**
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL RAY CUZZART II, IDEAL WEB SERVICES OR ANY OTHER
* CONTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/

/**
* IdealMySQL class.
*
* This is the class file used to connect and do
* common things with a MySQL database.
* @package Idealws
* @subpackage classes
*/
class IdealMySQL {
    
/**
     * @access protected
     * @var string
     * @desc Set to 1 to send errors to admins email address.
     */
    
protected $adminSendEmail = 0;
    
/**
     * @access protected
     * @var string
     * @desc Set to admins email address for error notification.
     */
    
protected $adminEmail = "yourname@yourdomain.com";
    
/**
     * @access protected
     * @var string
     * @desc Reply to address. Usually a email address you do not except emails to.
     */
    
protected $adminFromEmail = "noreply@yourdomain.com";
    
/**
     * @access protected
     * @var string
     * @desc Subject line for admins error email.
     */
    
protected $adminSubject = "There has been a error with name of your program.";

// *********************************************************************************** //
// ***************** DO NOT CHANGE ANYTHING BELOW THIS LINE ************************** //
// ********************* UNLESS YOU KNOW WHAT YOUR DOING ***************************** //
// *********************************************************************************** //
    /**
     * @access protected
     * @var integer|string
     */
    
protected $db;
    
/**
     * @access protected
     * @var integer|string
     */
    
protected $dbHost;
    
/**
     * @access protected
     * @var integer|string
     */
    
protected $dbUser;
    
/**
     * @access protected
     * @var integer|string
     */
    
protected $dbPass;
    
/**
     * @access public
     * @var integer|string
     */
    
public $dbConnect;
    
/**
     * @access public
     * @var string
     */
    
public $dbResults;
    
/**
     * @access public
     * @var string
     */
    
public $dbSelected;
    
/**
     * @access public
     * @var integer
     */
    
public $dbAffectedRows;
    
/**
     * @access public
     * @var integer
     */
    
public $dbNumberRows;
    
/**
     * @access protected
     * @var integer|string
     */
    
protected $errorCode;
    
/**
     * @access private
     * @var integer|string
     */
    
private $errorText;
    
/**
     * Constructor sets up {$db $dbHost $dbUser $dbPass}
     */
    
function __construct($vardb, $vardbhost, $vardbuser, $vardbpass) {
        
// Lets make sure the database information provided does not
        // have any illegal characters in it.
        
if($this->checkvar($vardb))$this->db = $vardb;
        if(
$this->checkvar($vardbhost))$this->dbHost = $vardbhost;
        if(
$this->checkvar($vardbuser))$this->dbUser = $vardbuser;
        if(
$this->checkvar($vardbpass))$this->dbPass = $vardbpass;
        
// Lets try and make a database connection
        
$this->MySQLConnect();
    }
    
/**
     * Function to connect to database
     *
     * This function is used to connect to the database of
     * choice. This function is publicly accesable
     * @return integer
     */
    
protected function MySQLConnect() {
        
// We need to try and connect to the database from here.
        
try {
            
$conn = mysql_connect($this->dbHost,$this->dbUser,$this->dbPass);
            if(
$conn) {
                
$this->dbConnect = $conn;
                
// Lets select the database we are going to be using
                
try {
                    if(
mysql_select_db($this->db)) {
                        
$this->dbSelected = 1;
                    }else{
                        
throw new Exception($this->errorCode = 6);
                    }
                }
                
catch(Exception $e) {
                
$line = $e->getLine()-3;  // Get line number where exception was thrown and subtract to actual line of error
                
$errfile = $e->getFile(); // Get the file name and path of the error                
                
echo $this->getMessageMap();
                    
// We are going yo send the email from
                // here so the user does not have to wait.
                
if($this->adminSendEmail) {
                    
$this->emailAdmin($this->errorText, $line, $errfile);
                }
                    exit;
                }
            }else{
                
throw new Exception($this->errorCode = 2);
            }
        }
        
catch(Exception $e) {
            
$line = $e->getLine()-4;    // Get line number where exception was thrown and subtract to actual line of error
            
$errfile = $e->getFile();    // Get the file name and path of the error        
            
echo $this->getMessageMap();
            
// We are going yo send the email from
            // here so the user does not have to wait.
            
if($this->adminSendEmail) {
                
$this->emailAdmin($this->errorText, $line, $errfile);
            }
            exit;
        }    
    }
    
    
/**
     * Function to do database queries
     *
     * This funstion is to do actual database queries. It will return
     * the affected rows if it is a INSERT, DELETE, UPDATE, REPLACE, DROP
     * if it is a SELECT, SHOW, DESCRIBE or EXPLAIN it will return the
     * resource.
     *
     * We have not tested the input for the query. You should check
     * what is being passed for illegal characters prior to sending
     * the query here.
     * @return integer
     * @return resource|string
     */
    
public function MySQLQuery($query) {
        
// Lets get the query information we are going to check
        // to see if it is a INSERT, DELETE, UPDATE, REPLACE or DROP
        
if (eregi("(^INSERT|DELETE|UPDATE|REPLACE|DROP)", $query)) {
            
try {
                
// Let's do the query
                
$this->dbResults = mysql_query($query, $this->dbConnect);
                
$this->dbAffectedRows = mysql_affected_rows($this->dbConnect);
                
// Let's check to see how many rows are affected
                
if ($this->dbResults) {
                    
// Return the affected rows
                    
return $this->dbAffectedRows;
                }else{
                    
// If there is a problem we need to let someone know
                    
throw new Exception($this->errorCode = 5);
                }                
            }
            
// Now we catch the error and process it
            
catch(Exception $e) {
                
$line = $e->getLine()-8;    // Get line number where exception was thrown and subtract to actual line of error
                
$errfile = $e->getFile();    // Get the file name and path of the error            
                
echo $this->getMessageMap();
                
// We are going yo send the email from
                // here so the user does not have to wait.
                
if($this->adminSendEmail) {
                    
$this->emailAdmin($this->errorText, $line, $errfile);
                }
                exit;
            }
        
// Lets get the query information we are going to check
        // to see if it is a SELECT, SHOW, DESCRIBE or EXPLAIN
        
}elseif (eregi("(^SELECT|SHOW|DESCRIBE|EXPLAIN)", $query)) {
            
try {
                
// Let's do the query
                
$this->dbResults = mysql_query($query, $this->dbConnect);
                
$this->dbNumberRows = mysql_num_rows($this->dbResults);
                
// Let's check to see how many rows are affected
                
if ($this->dbNumberRows) {
                    
// Return the results
                    
return $this->dbResults;
                }else{
                    
// If there is a problem we need to let someone know
                    
throw new Exception($this->errorCode = 5);
                }                
            }
            
// Now we catch the error and process it
            
catch(Exception $e) {
                
$line = $e->getLine()-8;    // Get line number where exception was thrown and subtract to actual line of error
                
$errfile = $e->getFile();    // Get the file name and path of the error            
                
echo $this->getMessageMap();
                
// We are going yo send the email from
                // here so the user does not have to wait.
                
if($this->adminSendEmail) {
                    
$this->emailAdmin($this->errorText, $line, $errfile);
                }
                exit;
            }
        }
    }
    
    
/**
     * Function to test variables
     *
     * This function is used to test if variables have illegal characters.
     * the only characters we want in the string ar a-z A-Z _- and 0-9 anything
     * else will be considered illegal and throw a error message.
     * @param string $var string to test
     * @return integer
     */
    
public function checkvar($var) {
        
try {
             if(
eregi('^[a-zA-Z0-9_-]+$', $var)) {
                return
TRUE;
            }else{
                 
throw new Exception($this->errorCode = 1);
                
// return FALSE;
            
}
        }
        
catch (Exception $e) {
            
$line = $e->getLine()-3;    // Get line number where exception was thrown and subtract to actual line of error
            
$errfile = $e->getFile();    // Get the file name and path of the error    
            
echo $this->getMessageMap();
            
// We are going yo send the email from
            // here so the user does not have to wait.
            
if($this->adminSendEmail) {
                
$this->emailAdmin($this->errorText, $line, $errfile);
            }
            exit;
        }
    }
    
    
/**
     * Function to get error codes
     *
     * This function is used to get the errors from the flat
     * file we have setup for our error system.
     * @return string
     */
    
protected function getMessageMap() {
        
$errors = file("errors.txt");
        foreach(
$errors as $error) {
            list(
$key,$value) = explode(",",$error,2);
            
$errorArray[$key] = $value;
        }
        
// Assign just the error to a error variable
        // so we can use it in the emails.
        
$this->errorText = $errorArray[$this->errorCode];
        
// Return the error so we can print it out for the
        // user.
        
return "<br><center><div class=\"errortitle\">Application Error!</div><div class=\"error\">".$errorArray[$this->errorCode]."</div></center>";
    }
    
    
/**
     * Function to email admin if there is a error.
     *
     * This function is used to email errors as they occur to the
     * admin of the site.
     * @return string
     */
    
protected function emailAdmin($errorMessage, $errorLine, $errorFile) {        
        
// Lets's try and send a email when there is a error.
        
try {
            
// Who is the email coming from?
            
$headers = "From: $this->adminFromEmail" . "\r\n";    
            
// Here is the message. You can change this to bee however you want.        
            
$message = "Application Error!\n\nThe following error occured: ".$errorMessage."\nLine Number: ".$errorLine."\nFile: ".$errorFile;
            
// Actually send the email out.
            
$mailsent = mail($this->adminEmail, $this->adminSubject, $message, $headers);
            
// If the email gets sent out then we are good.
            
if ($mailsent) {
                return
TRUE;
            }else{
                
// If the email fails we need to produce another error.
                
throw new Exception($this->errorCode = 4);
            }
        }
        
// Let's show the error now that we have produced it.
        
catch(Exception $e) {
            echo
$this->getMessageMap();
            exit;
        }
    }
}
?>


Error code file error.txt:
1,Invalid characters in information provided!
2,Unable to connect to database.
3,Invalid email address please enter a proper email address and try again!
4,Unable to send email to admin!
5,Unable to process database query. Please try again.
6,Unable to select database.

Stylesheet contents style.css:
.errortitle {
    font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
    font-size: 11px;
    font-weight: bold;
    border-top: 1px solid #68686A;
    border-right: 1px solid #68686A;
    border-left: 1px solid #68686A;
    width: 400px;
    padding: 4px 4px 4px 4px;
    background-color: #C00000;
    color: White;
    text-align: left;
}
.error {
    font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
   font-size: 11px;
    font-weight: normal;
    border: 1px solid #68686A;
    background-color: #FFFFFF;
    padding: 4px 4px 4px 4px;
    width: 400px;
    text-align: left;
    background-image: url(error.png);
    background-repeat: no-repeat;
    height: 75px;
    padding-left: 65PX;
    background-position: left;
}
.center {
    vertical-align: middle;
}


Test php file test.php:
<html>
    <head>
        <title>Test IdealMySQL Class</title>
    <link href="style.css" rel="stylesheet" type="text/css" />
    </head>
<body>
<?php
// Include the IdealMySQL Class
include ("./IdealMySQL.class.php");

// Create a new object
$dbtest = new IdealMySQL("database","localhost","dbuser","dbpassword");

// Check variable to make sure it does not have any invalid characters
// the only valid characters are: a-zA-Z0-9_-
$dbtest->checkvar("a$");

// Insert some information into the database.
$dbtest->MySQLQuery("INSERT INTO database(name,email,text) VALUES('name','email@email.com','This stuff')");

// Selet some information from the database
$stuff = $dbtest->MySQLQuery("SELECT * FROM database");
while(
$row = mysql_fetch_array($stuff)) {
    echo
$row['id']."<br>";
}
?>
</body>
</html>


 


Comments:

  ghostofjava
  Subject: "so cool" Date: Mar 08 2008 at 4:33 am    
ohhh thanks so cool really this is very nice ...
You Must be signed in or a member to comment.


Code Stats

Code Stats

4,039 Views
1 Total Comments
0 Rating of 5 ( Votes)

Options

Code Options

· Login to Rate This Code
· Login to Post a Comment
· Read more by this author
Digg This Code! Del.icio.us: Bookmark This Code Reddit: Bookmark This Code! BlinkList: Blink This Code! YahooMyWeb BlogMarks: Add This Mark! Furl: Save This Code Spurl: Mark This Code!

Code Samples

Related    

· pear database connection implmentation
· CAPTCHA Image
· view php source
· Database Connection
· Pagination




Flights - Mobile Phones - Loans - Scottsdale Landscaping

"AllSyntax.com" Copyright © 2002-2007; All rights lefted, all lefts righted.
Privacy Policy  |  Internet Rank