Note that this class does not use the deprecated MySQL library, it uses MySQLi library. Here is the complete PHP Database Class source code;
First php is the configuration file for use in database class.
I call it dbconfig.php
<?php define("DB_SERVER", "localhost"); define("DB_USER", "db_username"); define("DB_PASS", "db_user_password"); define("DB_NAME", "db_scheme_name"); ?>I think it is better to keep configuration data in a seperate php file, because if change the database name, username or password, i just change the dbconfig.php file.
MySQLi Database Class
<?php // My database Class called myDBC class myDBC { // our mysqli object instance public $mysqli = null; // Class constructor override public function __construct() { include_once "dbconfig.php"; $this->mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME); if ($this->mysqli->connect_errno) { echo "Error MySQLi: (" . $this->mysqli->connect_errno . ") " . $this->mysqli->connect_error; exit(); } $this->mysqli->set_charset("utf8"); } // Class deconstructor override public function __destruct() { $this->CloseDB(); } // runs a sql query public function runQuery($qry) { $result = $this->mysqli->query($qry); return $result; } // runs multiple sql queres public function runMultipleQueries($qry) { $result = $this->mysqli->multi_query($qry); return $result; } // Close database connection public function CloseDB() { $this->mysqli->close(); } // Escape the string get ready to insert or update public function clearText($text) { $text = trim($text); return $this->mysqli->real_escape_string($text); } // Get the last insert id public function lastInsertID() { return $this->mysqli->insert_id; } // Gets the total count and returns integer public function totalCount($fieldname, $tablename, $where = "") { $q = "SELECT count(".$fieldname.") FROM " . $tablename . " " . $where; $result = $this->mysqli->query($q); $count = 0; if ($result) { while ($row = mysqli_fetch_array($result)) { $count = $row[0]; } } return $count; } } ?>Other Descriptions
Because I always use UTF-8 encoding I set my database engine connection to utf8 too.
$this->mysqli->set_charset("utf8");
Actually you dont need to close the connection, as the connection closes it self after the query executions completted. But sometimes I run lots of queries in same session and I just close it.
public function __destruct() { $this->CloseDB(); }
Usage Examples
SQL Insert Example
include "mydbclass.php"; $mydb = new myDBC(); $firstname = $mydb->clearText($firstname); $lastname = $mydb->clearText($lastname); $sql = "INSERT INTO users (usr_firstname,usr_lastname) VALUES ('$firstname','$lastname'); "; $mydb->runQuery($sql);
SQL SELECT Example
include "mydbclass.php"; $mydb = new myDBC(); $id = $mydb->clearText($id); $sql = "SELECT * FROM users WHERE usr_id='$id' LIMIT 1;"; $result = $mydb->runQuery($sql); if(isset($result)) { $row = mysqli_fetch_array($result); $firstname = $row['usr_firstname']; $lastname = $row['usr_lastname']; }