PDA

View Full Version : نظرتون در مورد کلاس زیر و کمبود هاش !



wallfa
جمعه 08 اردیبهشت 1391, 01:02 صبح
با سلام خدمت دوستان گل بنده یه کلاس اتصال به پایگاه داده ها حدود 11 ماهی نوشتم ، قصد پخش عمومی نبود ، اما دلم نیومد دوستان گل ایراد ازم نگیرن ، پس اینجا میذارمش هر کمبودی به ذهنتون میرسه بهم بگید !
من سعی خودم کردم که بدون مشکل باشه !

دوست عزیز اگر چیزی به نظرت نمیرسه نظرت بگو بهم امید میده ! :خجالت:




<?php
/**
* class database for wallfa.com ( hasan movahed )
*
*/


class database{

private $dbname;
protected $connect;
private $query;
protected $DBVARS=array(
'username'=>'root',
'password'=>'',
'hostname'=>'localhost',
'db_name'=>'cmsdb'
);
/**
* in ke sazande class
*/

public function __construct(){
if(is_null($this->DBVARS['db_name'])){
echo " free name database ";
}else{
$this->dbname=$this->DBVARS['db_name'];
}
if (!isset($this->connect)){
$this->connect=mysql_connect($this->DBVARS['hostname'],$this->DBVARS['username'],$this->DBVARS['password']) or mysql_error() and die('<br>Server connexion not possible.') ;
}
else{
$this->__destruct();
$this->__construct();
}
}
/**
* kar in object gerftan mysql_query va antekhab database
*
*/

public function __mysql_query($query){
if(is_null($query)){
return false;
}
else{
$this->query=trim($query);
if(is_null($this->dbname)){
echo "null db_name";
}
else{
mysql_select_db($this->dbname,$this->connect) or mysql_error();
}
mysql_query("SET NAMES utf8");
$this->query=mysql_query($this->query,$this->connect) or mysql_error();
return $this->query;
}
}
function fetch_assoc($q){
return mysql_fetch_assoc($this->__mysql_query($q));
}
/**
* function for close mysql
* in shay mitavanad estefadeh nashavad !
*/
public function close(){
if(isset($this->connect))
mysql_close($this->connect);
unset($this->connect);
}

/**
* chek mikonad ke agar in dade yek array bod va agar khaly nabood
* va yek farakhan anjam midahad
* impload array ra baray astefade rahat tar be sorat yek reshte dar myavarad
*/

private function implode($glue,$array) {
if (is_array($array) && !empty($glue)) {
$quoted_array = array_map(array($this,'check_quotes'),$array);
return implode($glue,$quoted_array);
}
}


/**
*in ke az asmesh moshakhas array tabdil be ye reshte mikone
*
*/

private function array_to_string( $array = null, $inner_glue = '=', $outer_glue = ' AND ',$recurse=true){
$output = array();
if (is_array($array)){
foreach ($array as $key => $item){
if (is_array ($item) && $recurse){
$output[] = "{$key} IN (".$this->implode(",",$item).") ";
}
else{
$output[] = " {$key} {$inner_glue} ".$this->checkquotes($item)." ";
}
}
}
return implode( $outer_glue, $output);
}


/**
* az inja be bad moshakhas chi !
*
*/

public function select($array){
$array = array_merge(array('select'=>'*'),$array);
$query = "";
if (!array_key_exists('from',$array) ) {
return $query;
} else {
$table = $array['from'] ;
$query = "SELECT ".$array['select']." FROM ".$table;
}
if (array_key_exists('where',$array) && !empty($array['where'])) {
$query .= " WHERE ".(is_array($array['where']) ? $this->array_to_string($array['where']) : strval(mysql_real_escape_string($array['where'])));
}
if (array_key_exists('order',$array)) {
$query .= " ORDER BY ".$array['order'];
}
if (array_key_exists('limit',$array)) {
$query .= " LIMIT ".( is_array($array['limit']) ? implode(',',$array['limit']) : $array['limit'] );
}
return $query;
}


/**
* chek kardan naghl gholl ha !
*
*/

private function checkquotes($var) {
if (is_string($var)) {
$var = mysql_escape_string($var);
$var = "'".$var."'";

}
return $var;
}
/**
* insert database
*/
public function insert($table,$value_array)
{
$keys = "";
$values = "";
foreach ($value_array as $key=>$value)
{
if ((bool)$value) {
$keys .= $key . ",";

if (is_string($value)) {
$value = trim($value);
}
$values .= $this->checkquotes($value).",";

}
}
$keys = substr($keys, 0, -1);
$values = substr($values, 0, -1);
$query = "INSERT INTO ".$table." (".$keys.") VALUES (".$values.")";

return $query;
}


/**
* update for fark in the database
*
*/

public function update($table,$value_array,$where,$all=false)
{
$list = "";
foreach ($value_array as $key=>$value)
{
if ($value == 0 || $value !="" || $all) {
if (is_string($value) && preg_match("/\(.*\)/",$value) != 1 ) {
$value = "'" . trim($value) . "'";
}
$list .= "{$key}={$value},";
}


}
if (!empty($list)) {
$list = substr($list, 0, -1);
}
$where = " WHERE ".(is_array($where) ? $this->array_to_string($where) : strval(mysql_real_escape_string($where)));
$query = "UPDATE ".$table." SET {$list} {$where}";
return $query;

}


/**
* delet strin from database
*
*/

public function delete($table,$where='') {
if (!empty($where)) {
$where = "WHERE ".(is_array($where) ? $this->array_to_string($where) : strval(mysql_real_escape_string( $where) ));
}
$query = "DELETE FROM ".$table." {$where}";
return $query;
}


/**
* it is destruct
*
*/

public function __destruct(){
$this->close();
}
}

?>

MostafaEs3
جمعه 08 اردیبهشت 1391, 01:57 صبح
:لبخند: این کلاس برای استفاده ی ساده خوب هستش . حالا من یکی میذارم یکمی پیچیده تر (این توی یک سایت خارجی بود . کپی رایت حذف نشده :لبخندساده:)



<!--
This class is designed to be the interface class with a database (e.g MySQL). This is currently setup to use SQL syntax however can be changed if needed in future for a different type of database technology. Using this class will save a lot of programming if a change was needed. Has 3 main types of user accounts on construction for database privileges (readWrite, readWriteCreate, readOnly). Functions include query, insert, update, delete, number etc (have a look at the code :) )
-->

<?php
/**
* File: Database.php
*
* This class is designed to be the interface class with a database.
* This is currently setup to use SQL syntax however can be changed if needed in future for a different type of database.
* Using this class will save a lot of programming if a change was needed.
* Also works brilliantly for MySQL, used in 3 major projects so far :)
*
*
* @author Daniel Rosser
* @version 1.0
*
*/


class Database {
private $HOST = "example.com";
private $TABLE = "table";
private $USER = "";
private $PASS = "";
private $ERROR_CONNECT = "Could not connect to Database";
private $ERROR_QUERY = "Could not query the Database";
private $connection;
private $lastResult;

/**
* Constructor
* @param type - Type of connection, Read only, Write
*/
function __construct($type) //php 5+ style constructor
{
switch ($type) {
case readWrite:
$this->USER = "username";
$this->PASS = "password";
break;
case readWriteCreate:
$this->USER = "username";
$this->PASS = "password";
break;
case readOnly:
default:
$this->USER = "username";
$this->PASS = "password";
break;
}
$this->connect();
}

/**
* Destructor
*/
function __destruct()
{
$this->close;
}

/**
* Connect to the database
* @return connection
*/

function connect()
{
$this->connection = mysql_connect($this->HOST,$this->USER,$this->PASS) or print mysql_error($this->ERROR_CONNECT);
$result = mysql_select_db($this->TABLE,$this->connection);
return($connection);
}

/**
* Delete a row from a table
* @param table - Table name
* @param id - ID of row
* @return result
*/
function delete($table, $id)
{
$query = "DELETE FROM $table WHERE id='$id'";
$result = mysql_query($query,$this->connection) or print mysql_error($this->ERROR_QUERY);
return($result);
}

/**
* Delete a row from a table
* @param table - Table name
* @param idName - name of the ID row
* @param id - ID of row
* @return result
*/
function deleteSpecific($table, $idName, $id)
{
$query = "DELETE FROM $table WHERE $idName='$id'";
$result = mysql_query($query,$this->connection) or print mysql_error($this->ERROR_QUERY);
return($result);
}

/**
* Disconnects and closes the connection with database
*/
function disconnect()
{
mysql_close($this->connection);
}

/**
* Insert fields, values into Table
* @param table - Table name
* @param fields - Fields to insert
* @param values - Values to insert
*/
function insert( $table, $fields, $values )
{
$start = "INSERT INTO $table(";
$middle = ") VALUES (";
$end = ")";
$size = sizeof($fields); // verify the size of the fields
$stringFields = "";
for($i=0;$i <= ($size-1);$i++){
$stringFields .= "$fields[$i]";
if( $i != ($size-1) ){
$stringFields .= ",";
}
}
$stringValues="";
for( $k=0; $k <= ($size-1); $k++ ){
$stringValues .= "\"$values[$k]\"";
if( $k != ($size-1) ){
$stringValues .= ",";
}
}
$insert = "$start$stringFields$middle$stringValues$end";
$insert = str_replace('""', mysql_escape_string("NULL"), $insert);
$insert = str_replace('" "', mysql_escape_string("NULL"), $insert);
$insert= str_replace("''", "", $insert);
$insert = str_replace("' '", "", $insert);
$this->query($insert);
}

/**
* Update fields, values into Table
* @param table - Table name
* @param fields - Fields to insert
* @param values - Values to insert
* @param idName - Name of Primary Key row
* @param id - The unique identifier
*/
function update( $table, $fields, $values, $idName, $id )
{
$start = "UPDATE $table SET ";
$end = " WHERE $idName=\"$id\";";
$size = sizeof($fields); // verify the size of the fields
$sizeV = sizeof($values);
if($sizeV != $size)
echo "Developer Error, Size of Fields / Values are not the same- Fields:$size Values:$sizeV";

$string = "";
for($i=0;$i <= ($size-1);$i++){
$string .= "$fields[$i] = \"$values[$i]\"";
if( $i != ($size-1) ){
$string .= " , ";
}
}
$update = "$start$string$end";
$update = str_replace('""', mysql_escape_string("NULL"), $update);
$update = str_replace('" "', mysql_escape_string("NULL"), $update);
$update = str_replace("''", "", $update);
$update = str_replace("' '", "", $update);
$this->query($update);
}

/**
* Use this for a SQL Query
* Data is stored inside $this->lastResult
* @param sql - SQL to query the database
*/
function query($sql)
{
if(!($this->lastResult = mysql_query($sql, $this->connection)))
die("MySQL Error from Query. Error: ".mysql_error()." From SQL : $sql");
}

/**
* Fetch rows from last query
* @return row array
*/
function fetchRow()
{
return mysql_fetch_array($this->lastResult);
}

/**
* Fetch rows from last query
* @return an associative array that corresponds to the fetched row and moves the internal data pointer ahead
*/
function fetchRowAssociative()
{
return mysql_fetch_assoc($this->lastResult);
}



/**
* Number of rows in a table
* @param table - Table to query
*/
function number($table)
{
$query = "SELECT * FROM $table";
$result = mysql_query($query, $this->connection);
$number = mysql_num_rows($result);
return($number);
}

/**
* Return the last id of an insertion
* @return last id of an insertion
*/
function lastId()
{
return mysql_insert_id($this->connection);
}

/**
* Return the number of rows affected on last query
* @return number of rows
*/
function numberAffected()
{
$query = mysql_affected_rows();
return($query);
}

/**
* Return the number of rows in the last query
* @return number of rows
*/
function numberOfRows()
{ $number = mysql_num_rows($this->lastResult);
return($number);
}

/**
* Return the number of rows found in a query
* @return number of rows
*/
function numberRows($query)
{
$result = mysql_query($query, $this->connection);
$number = mysql_num_rows($result);
return($number);
}

};

?>

wallfa
جمعه 08 اردیبهشت 1391, 11:05 صبح
کلاس زیبایی بود ، ولی یه سری کامل اصول با مال من فرق میکنه !
من ورودی که دریافت می کنم بر حسب آرایه است ، چیزی مثل کلاس ورد پرس برای همین منظور !
ولی من خودم احتمال میدم که ساختارش بهتر میشه کرد ، که جاهای دیگه مشکل پیدا نکنه !

Hamid.RDN
یک شنبه 10 اردیبهشت 1391, 17:44 عصر
دوستان کدها خوبه ولی قابلیت استفاده مجدد چی شده؟ وراثت چی؟
یه نگاه به کدهای PDO ها بندازید

Hamid.RDN
یک شنبه 10 اردیبهشت 1391, 18:48 عصر
برای کار با دیتابیس بدون وراثت این کلاس رو هم ببینید



<?php
/**
* MySQL
*
* @author HR.DN
* @version 1.0
* @access public
*/
class DatabaseMySQL
{
/* Class Constants
---------------------------------------------------------------------------------------------------- */
/**
* Class version holder
*/
const VERSION = '1.0';

/* Public Properties
---------------------------------------------------------------------------------------------------- */
public $cache_data = array();
public $cache_data_index = 0;
public $result_cached = false;
public $use_cache = false;

/**
* Sets MySQL server name
*
* @var string $server MySQL server name
* @access public
*/
public $server = '';

/**
* Sete MySQL server port
*
* @var integer $port MySQL server port
* @access public
*/
public $port = 3306;

/**
* Sets MySQL Connection username
*
* @var string $user_name MySQL Connection user name
* @access public
*/
public $user_name = '';

/**
* Sets MySQL Connection password
*
* @var string $password MySQL Connection password
* @access public
*/
public $password = '';

/**
* Sets MySQL Database name
*
* @var string $db_name MySQL database name
* @access public
*/
public $db_name = '';

/**
* Sets MySQL Connection persistent state
*
* @var bool $persistent MySQL Connection persistent state
* @access public
*/
public $persistent = false;

/* Private Properties
---------------------------------------------------------------------------------------------------- */
/**
* Contains MySQL Connection resource
*
* @var resource $_link PHP Resource id of MySQL connection
* @access private
*/
private $_link = null;

/* Public Methods
---------------------------------------------------------------------------------------------------- */
/**
* MySQL Constructor
*
* Constructor that get mysql connection informations and create mysql connection
*
* @access public
* @param string $server MySQL server name
* @param string $user Mysql user name
* @param string $password Mysql password
* @param string $dbname Database name
* @param integer $port mysql server port
* @param bool $persistent Set persistent Connection
*/
public function __construct($server = '', $user = '', $password = '', $dbname = '', $port = 3306, $persistent = false)
{
if($server != '')
$this->connect($server, $user, $password, $dbname, $port, $persistent);
}

/**
* Database Destructor
*
* Close mysql connection that created if is not persistent connection
*
* @access public
*/
public function __destruct()
{
if(!$this->persistent)
$this->close($this->_link);
}

/**
* Raise & Handle errors
*
* @access public
* @param int $error_id Id for an error in Parsen Assistant System. 0 for Unknown Error
* @param string $error_message Error message text
*/
public static function error($error_id = 0, $error_message = '')
{
if(class_exists('Error'))
{
// Error Class
Error::DatabaseErrorHandler($error_id, $error_message);
}
else
{
echo '<b>Error</b><br /><b>Id:</b> ' . $error_id . '<br /><b>Message:</b> ' . $error_message;
}
}

/**
* Get class version
*
* @return string Class version
*/
public function version()
{
return self::VERSION;
}

/**
* Connect to mysql server and set database informations
*
* @access public
* @param string $server MySQL server name
* @param string $user Mysql user name
* @param string $password Mysql password
* @param string $dbname Database name
* @param integer $port mysql server port
* @param bool $persistent Set persistent Connection
*/
public function connect($server = 'localhost', $user = 'root', $password = '', $dbname = '', $port = 3306, $persistent = false)
{
if($persistent)
$this->_link = @mysql_pconnect($server, $user, $password);
else
$this->_link = @mysql_connect($server, $user, $password);
if(!$this->_link)
{
self::error(mysql_errno(), mysql_error());
return false;
}
if(isset($dbname))
$this->selectDatabase($dbname);
$this->server = $server;
$this->user_name = $user;
$this->password = $password;
$this->db_name = $dbname;
$this->persistent = $persistent;
return true;
}

/**
* Get the server connection resource
*
* @access public
* @return resource MySQL connection resource
*/
public function link()
{
return $this->_link;
}

/**
* Select and set mysql database
*
* @access public
* @param string $dbname Database name
*/
public function selectDatabase($dbname)
{
if(!mysql_select_db($dbname, $this->_link))
{
self::error(mysql_errno(), mysql_error());
return false;
}
return true;
}

/**
* Escape given string to remove SQL Injections
*
* @access public
* @param string $string String to escape
* @return string Escaped string
*/
public function escapeString($string)
{
if(get_magic_quotes_gpc())
$string = stripslashes($string);
if($this->_link)
return mysql_real_escape_string($string, $this->_link);
else
return mysql_escape_string($string);
}

/**
* Run Mysql queries that have result
*
* @access public
* @param string $query Mysql query string
* @return mixed Return Mysql result resource id if run query successfuly and return null if not
*/
public function runQuery($query)
{
if((isset($query)) && ($query != ''))
{
$result = mysql_query($query, $this->_link);
if(!$result)
{
self::error(mysql_errno(), mysql_error());
return null;
}
return $result;
}
}

/**
* Run Mysql queries that have no result
*
* @access public
* @param string $query Mysql query string
* @return bool Return True if query run successful otherwise return false
*/
public function runNonQuery($query)
{
if((isset($query)) && ($query != ''))
{
$result = mysql_query($query, $this->_link);
if(!$result)
{
self::error(mysql_errno(), mysql_error());
return false;
}
return true;
}
}

/**
* Fetch All Query Results Into Array
*
* @param resource $result Mysql result resource id
* @return array Array of fetched rows
*/
public function fetchAll($result)
{
if($this->result_cached)
return $this->_fetchFromCache('all');
$fetched = array();
if($result)
{
while($row = mysql_fetch_assoc($result))
$fetched[] = $row;
return $fetched;
}
else
return null;
}

/**
* Fetch Query Results Into Array
*
* @param resource $result Mysql result resource id
* @return array Array of fetched rows
*/
public function fetchArray($result)
{
if($this->result_cached)
return $this->_fetchFromCache('array');
if($result)
{
$fetched = mysql_fetch_array($result);
return $fetched;
}
else
return null;
}

/**
* Fetch Query Results Into Association Array
*
* @param resource $result Mysql result resource id
* @return array Association Array of fetched rows
*/
public function fetchAssoc($result)
{
if($this->result_cached)
return $this->_fetchFromCache('assoc');
if($result)
{
$fetched = mysql_fetch_assoc($result);
return $fetched;
}
else
return null;
}

/**
* Fetch Query Result Into Row Array
*
* @access public
* @param resource $result Mysql result resource id
* @return array Array of fetched row
*/
public function fetchRow($result)
{
if($this->result_cached)
return $this->_fetchFromCache('row');
if($result)
{
$fetched = mysql_fetch_row($result);
return $fetched;
} else
return null;
}

/**
* Select rows from database tables
*
* @access public
* @param string $table_name
* @param string $columns_list
* @param string $conditions
* @return resource on success, or FALSE on error
*/
public function select($table_name, $columns_list = '*', $conditions = '')
{
$result = null;
$select_query = "SELECT $columns_list FROM $table_name $conditions";
if($this->use_cache AND class_exists('Cache'))
{
if($this->result_cached = Cache::isQueryCached($select_query))
{
$this->cache_data_index = 0;
$this->cache_data = Cache::loadQueryResult($select_query);
}
else
{
$result = $this->runQuery($select_query);
$this->cache_data = $this->fetchAll($result);
Cache::cacheQueryResult($select_query, $this->cache_data);
$this->result_cached = true;
}
}
else
{
$this->result_cached = false;
$result = $this->runQuery($select_query);
}
return $result;
}


/**
* Select a feild value from database tables
*
* @access public
* @param string $table_name
* @param string $field_name
* @param string $conditions
* @return mixed Field value
*/
public function selectField($table_name, $field_name = '', $conditions = '')
{
$select_query = "SELECT $field_name FROM $table_name $conditions";
$temp_result = $this->fetchRow($this->runQuery($select_query));
return $temp_result[0];
}

/**
* Database::insert()
*
* @param mixed $table_name
* @param mixed $columns
* @return
*/
public function insert($table_name, $columns)
{
$fields = '';
$values = array();
foreach ($columns as $value)
{

if(gettype($value) == 'string')
$values[] = "'" . $this->escapeString($value) . "'";
else
$values[] = $value;
}
// Check if fields are named
if(!is_numeric(implode('', array_keys($columns))))
$fields = implode(',', array_keys($columns));
$values = implode(',', $values);
$query = "INSERT INTO $table_name ($fields) VALUES ($values)";
return $this->runNonQuery($query);

}

/**
* Database::batchInsert()
*
* @param mixed $table_name
* @param mixed $field_names
* @param mixed $field_values
* @return
*/
public function batchInsert($table_name, $field_names, $field_values)
{
foreach ($field_values as $row_values)
{
if(is_array($row_values))
{
$values = array();
foreach ($row_values as $value)
{
if(gettype($value) == 'string')
$values[] = "'" . $this->escapeString($value) . "'";
else
$values[] = $value;
}
$value_strings[] = '(' . implode(',', $values) . ')';
}
}
// Check if fields are not empty
if(is_array($field_names))
$fields = implode(',', array_values($field_names));
else
$fields = $field_names;
$all_values = implode(',', $value_strings);
$query = "INSERT INTO $table_name ($fields) VALUES $all_values";
return $this->runNonQuery($query);
}

/**
* Database::replace()
*
* @param mixed $table_name
* @param mixed $columns
* @return
*/
public function replace($table_name, $columns)
{
$fields = '';
$values = array();
foreach ($columns as $value)
{

if(gettype($value) == 'string')
$values[] = "'" . $this->escapeString($value) . "'";
else
$values[] = $value;
}
// Check if fields are named
if(!is_numeric(implode('', array_keys($columns))))
$fields = implode(',', array_keys($columns));
$values = implode(',', $values);
$query = "REPLACE INTO $table_name ($fields) VALUES ($values)";
return $this->runNonQuery($query);
}

/**
* Database::batchReplace()
*
* @param mixed $table_name
* @param mixed $field_names
* @param mixed $field_values
* @return
*/
public function batchReplace($table_name, $field_names, $field_values)
{
foreach ($field_values as $row_values)
{
if(is_array($row_values))
{
$values = array();
foreach ($row_values as $value)
{
if(gettype($value) == 'string')
$values[] = "'" . $this->escapeString($value) . "'";
else
$values[] = $value;
}
$value_strings[] = '(' . implode(',', $values) . ')';
}
}
// Check if fields are not empty
if(is_array($field_names))
$fields = implode(',', array_values($field_names));
else
$fields = $field_names;
$all_values = implode(',', $value_strings);
$query = "REPLACE INTO $table_name ($fields) VALUES $all_values";
return $this->runNonQuery($query);
}

/**
* Database::update()
*
* @param mixed $table_name
* @param mixed $columns
* @param string $condition
* @return
*/
function update($table_name, $columns, $condition = '')
{
$query = "UPDATE $table_name SET ";
foreach ($columns as $key => $value)
{
$query .= $key;
if(gettype($value) == 'string')
$query .= "='" . $this->escapeString($value) . "', ";
else
$query .= "=$value, ";
}
$query = trim($query, " \t\n\r\0\x0B,");
$query .= " $condition";
$this->runNonQuery($query);
}

/**
* Database::delete()
*
* @param mixed $table
* @param string $condition
* @return
*/
function delete($table, $condition = '')
{
$delete_query = "DELETE FROM $table $condition";
return $this->runNonQuery($delete_query);
}

/**
* Database::tableExists()
*
* @param mixed $table_name
* @return
*/
public function tableExists($table_name)
{
if($this->numRows($this->runQuery("SHOW TABLES LIKE '" . $table_name . "'")) == 0)
return false;
else
return true;
}

/**
* Database::truncate()
*
* @param mixed $table_name
* @return
*/
public function truncate($table_name)
{
return $this->runNonQuery("TRUNCATE TABLE $table_name");
}

/**
* Database::getInsertedId()
*
* @return
*/
function getInsertedId()
{
return mysql_insert_id();
}

/**
* Database::lockTable()
*
* @access public
* @param mixed $table_name
* @param mixed $lock_type
* @return
*/
public function lockTable($table_name, $lock_type = Database::TABLE_LOCK_READ)
{
if($lock_type == Database::TABLE_LOCK_READ)
echo "Read";
else if($lock_type == Database::TABLE_LOCK_WRITE)
echo "Write";
}

/**
* Database::getMaxId()
*
* @param mixed $table_name
* @return
*/
public function getMaxId($table_name)
{
$row = $this->fetchArray($this->runQuery('SELECT MAX(' . $this->getPrimaryKey($table_name) . ") FROM $table_name"));
return $row[0];
}

/**
* Database::getLastId()
*
* @param mixed $table_name
* @return
*/
public function getLastId($table_name)
{
return getNextId($table_name) - 1;
}

/**
* Database::getNextId()
*
* @param mixed $table_name
* @return
*/
public function getNextId($table_name)
{
$row = $this->fetchAssoc($this->runQuery("SHOW TABLE STATUS LIKE '$table_name'"));
return $row['Auto_increment'];
}

/**
* Database::getPrimaryKey()
*
* @param mixed $table_name
* @return
*/
public function getPrimaryKey($table_name)
{
$row = $this->fetchAssoc($this->runQuery("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.STATISTICS WHERE INDEX_NAME='PRIMARY' AND TABLE_NAME='$table_name'"));
return $row['COLUMN_NAME'];
}

/**
* Database::getClientInfo()
*
* @return
*/
public function getClientInfo()
{
return mysql_get_client_info();
}

/**
* Database::getClientVersion()
*
* @return
*/
public function getClientVersion()
{
preg_match("/[0-9]+\.[0-9]+\.[0-9]+/", $this->getClientInfo(), $match);
return $match[0];
}

/**
* Database::getServerInfo()
*
* @return
*/
public function getServerInfo()
{
return mysql_get_server_info();
}

/**
* Database::getServerVersion()
*
* @return
*/
public function getServerVersion()
{
preg_match("/[0-9]+\.[0-9]+\.[0-9]+/", $this->getServerInfo(), $match);
return $match[0];
}

/**
* Database::compareVersion()
*
* @param mixed $first_version
* @param mixed $second_version
* @return
*/
public function compareVersion($first_version, $second_version)
{
return version_compare($first_version, $second_version);
}

/**
* Database::numRows()
*
* @param mixed $result
* @return
*/
public function numRows($result)
{
return mysql_num_rows($result);
}

/**
* Database::getResource()
*
* @return
*/
public function getResource()
{
return $this->_link;
}

/**
* Database::freeResult()
*
* @param mixed $result
* @return
*/
public function freeResult($result)
{
mysql_free_result($result);
$this->cache_data = array();
$this->cache_data_index = 0;
}

/**
* Database::close()
*
* @param mixed $link
* @return
*/
public function close($link = null)
{
if($link != null)
mysql_close($link);
elseif($this->_link != null)
mysql_close($this->_link);
}

/**
* Database::affectedRows()
*
* @return
*/
public function affectedRows()
{
return mysql_affected_rows();
}

/**
* Database::isRowExists()
*
* @access public
* @param mixed $table_name
* @param string $condition
* @return
*/
public function isRowExists($table_name, $field = '*', $condition = '')
{
if($this->numRows($this->select($table_name, $field, $condition)) == 0)
return false;
else
return true;
}

/**
* Database::useCache()
*
* @access public
* @param bool Use Cache or Not
*/
public function useCache($use_cache = true)
{
$this->use_cache = $use_cache;
}

/**
* Database::_fetchFromCache()
*
* @access private
* @param string Fetch Resul Type ('all' | 'array' | 'assoc' | 'row')
* @return mixed Data From Cache
*/
private function _fetchFromCache($type = 'all')
{

if($type == 'all')
return $this->cache_data;
$index = $this->cache_data_index++;
if($index < count($this->cache_data))
{
switch($type)
{
case 'array':
return array_merge($this->cache_data[$index], array_values($this->cache_data[$index]));
break;
case 'assoc':
return $this->cache_data[$index];
break;
case 'row':
return array_values($this->cache_data[$index]);
break;
}
}
return false;
}
}
?>

البته این کلاس به کلاس Cache و Error که نوشتم هم احتیاج داره

wallfa
یک شنبه 10 اردیبهشت 1391, 19:21 عصر
من کلاس pdo پیدا نکردم از کجا گیر بیارم ؟

farhadfery
یک شنبه 10 اردیبهشت 1391, 23:01 عصر
دوستان کدها خوبه ولی قابلیت استفاده مجدد چی شده؟ وراثت چی؟
یه نگاه به کدهای PDO ها بندازید
دقیقا همین که شما فرمودید. PDO کار کنید بهتر.

Hamid.RDN
دوشنبه 11 اردیبهشت 1391, 03:23 صبح
اینجا رو یه نگاه کن

php.net/manual/en/book.pdo.php (http://barnamenevis.org/php.net/manual/en/book.pdo.php)

و

http://www.xpdo.org/