<?php /** * MYSUBD_SQL INSTANT CMS Database php FrameWork [alexpac26@yandex.ru] * * InstantCMS v1.9 * http://instantcms.ru/ * produced by InstantSoft, (www.instantsoft.ru) * * @copyright LICENSED BY GNU/GPL v2 * @since PHP 5 * */ class cmsDatabase { private static $instance; public $q_count = 0; public $q_dump = ''; public $db_link; /** * Фукция вывода отчета от ошибке. * Запускается при обнаружении ошибок в соединении с базой. * Аварийно завершает все вызовы на сайте через exit; * * @return null */ static function show_Error($er = '') { // отчет об ошибке echo '<body bgcolor="#FAEBD7"><center><font color=blue size=+2><b>Проблема с базой данных, технические неполадки, зайдите позже</b></font></center><hr>'; echo '<hr>MYSUBD_SQL INSTANT CMS Database php FrameWork'; exit; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// private function __construct(){ $inConf = cmsConfig::getInstance(); $this->db_link = mysql_connect($inConf->db_host, $inConf->db_user, $inConf->db_pass) or self::show_Error('Cannot connect to MySQL server'); mysql_select_db($inConf->db_base, $this->db_link) or self::show_Error('Cannot select "'.$inConf->db_base.'" database'); $this->query("SET NAMES cp1251"); } /** * статический конструктор класса cmsDatabase * * @return cmsDatabase */ public static function getInstance() { if (self::$instance === null) { self::$instance = new self; } return self::$instance; } /** * Функция автоматической замены префикса в запросах * * @param string $sql текст запроса * @param string $prefix префикс запроса * @return string */ protected function replacePrefix( $sql, $prefix='cms_' ) { /*$inConf = cmsConfig::getInstance(); $sql = trim(str_replace($prefix, $inConf->db_prefix.'_', $sql)); return $sql;*/ return $s[1].$s[2].$s[3].$s[4]; } else { } } /** * Функция выполняет действия mysql_query * * @param string $sql текст запроса * @param boolean $ignore_errors режим показа ошибок * * @return mysql_result */ public function query($sql, $ignore_errors=false){ $inConf = cmsConfig::getInstance(); $sql = $this->replacePrefix($sql); if ($inConf->debug){ $this->q_count += 1; $this->q_dump .= '<pre>'.$sql.'</pre><hr/>'; } self::show_Error('<b>QUERY ERROR</b>: '.$sql); } return $result; } /** * Функция выполняет действия mysql_num_rows * * @param mysql_result $result * * @return int */ public function num_rows($result){ } /** * Функция выполняет действия mysql_fetch_assoc * по окончании чтения делает сброс указателя для возможности повторного чтения данных запроса * * @param mysql_result $result * * @return array */ public function fetch_assoc($result){ //return mysql_fetch_assoc($result); return $res; } else { return false; } } /** * Функция выполняет действия mysql_fetch_row * * @param mysql_result $result * * @return array */ public function fetch_row($result){ } /** * Функция выполняет действия mysql_affected_rows * * @return int */ public function affected_rows(){ } /** * Функция возвращает последний вставленный ID * * @param string $table имя таблицы * * @return int */ public function get_last_id($table){ if ($res = $this->read_one("SELECT LAST_INSERT_ID() as lastid FROM $table LIMIT 1")) { return $res; } else { return 0; } } /** * Функция возвращает количество строк запроса * * @param string $table имя таблицы * @param string $where SQL условие * @param string $limit SQL предел (LIMIT) * * @return int */ public function rows_count($table, $where, $limit=0){ $sql = "SELECT COUNT(*) FROM $table WHERE $where"; if ($limit) { $sql .= " LIMIT ".$limit; } return $this->read_one($sql);
расширенный класс для работы с базой данных
#1
27 февраля 2012 в 02:47
расширенный класс для работы с базой данных. может быть применен при разработке модулей и компонентов.
#2
27 февраля 2012 в 02:53