⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysqldbadapter.class.php

📁 ProjectPier 源码 很好的项目管理程序
💻 PHP
字号:
<?php  /**  * DB access for MySQL  *  * @version 1.0  * @http://www.projectpier.org/  */  class MysqlDBAdapter extends AbstractDBAdapter {      /**    * Connect to the database based on the params array    *    * @access protected    * @param array $params    * @return null    * @throws DBConnectError    */    protected function connect($params) {            $host     = array_var($params, 'host', '');      $user     = array_var($params, 'user', '');      $pass     = array_var($params, 'pass', '');      $database = array_var($params, 'name', '');      $persist  = array_var($params, 'persist', false);            $link = $persist ?         @mysql_pconnect($host, $user, $pass) :        @mysql_connect($host, $user, $pass);              if (!is_resource($link)) {        throw new DBConnectError($host, $user, $pass, $database);      } // if            if (!@mysql_select_db($database, $link)) {        throw new DBConnectError($host, $user, $pass, $database);      } // if            $this->setLink($link);      $this->setParams($params);      $this->setDatabaseName($database);      return true;          } // connect        /**    * Basic query execution    *    * @access protected    * @param string $sql    * @return mixed    */    protected function executeQuery($sql) {      return @mysql_query($sql, $this->link);    } // executeQuery        /**    * Get begin work SQL (start transaction)    *    * @access public    * @param void    * @return string    */    function getBeginWorkCommand() {      return 'BEGIN WORK';    } // getBeginWorkCommand        /**    * Get comming SQL    *    * @access public    * @param void    * @return string    */    function getCommitCommand() {      return 'COMMIT';    } // getCommitCommand        /**    * Get rollback SQL    *    * @access public    * @param void    * @return string    */    function getRollbackCommand() {      return 'ROLLBACK';    } // getRollbackCommand        /**    * Return number of affected rows    *    * @access public    * @param void    * @return integer    */    function affectedRows() {      return mysql_affected_rows($this->link);    } // affectedRows        /**    * Return last insert ID    *    * @access public    * @param void    * @return integer    */    function lastInsertId() {      return mysql_insert_id($this->link);    } // lastInsertId        /**    * Returns last error message that server thrown    *    * @access public    * @param void    * @return string    */    function lastError() {      return mysql_error($this->link);    } // lastError        /**    * Returns code of the last error    *    * @access public    * @param void    * @return integer    */    function lastErrorCode() {      return mysql_errno($this->link);    } // lastErrorCode        /**    * Return array of tables that exists in database. This function will return NULL if there are     * no tables in database    *    * @access public    * @param void    * @return array    */    function listTables() {      $extracted_table_names = $this->executeAll('SHOW TABLES');      $table_names = array();      if (count($extracted_table_names)) {        foreach ($extracted_table_names as $extracted_table_name) {          $table_names[] = array_var($extracted_table_name, 'Tables_in_' . $this->getDatabaseName());        } // foreach      } // if      return count($table_names) ? $table_names : null;    } // listTables        /**    * Drop one or more tables. If $table_names is string only that table will be droped, else script will drop    *    * @access public    * @param mixed $table_names Array of table names or single table name    * @return boolean    */    function dropTables($table_names) {            if (empty($table_names)) {        return true;      } // if      if (!is_array($table_names)) {        $table_names = array($table_names);      } // if            $escaped_table_names = array();      foreach ($table_names as $table_name) {        $escaped_table_names[] = $this->escapeField($table_name);      }      return count($escaped_table_names) ?         $this->execute('DROP TABLE ' .  implode(', ', $escaped_table_names)) :        true;            } // dropTables        /**    * Remove all data from specific tables    *    * @access public    * @param mixed $table_names Single table name or array of table names    * @return boolean    */    function emptyTables($table_names) {            if (empty($table_names)) {        return true;      } // if      if (!is_array($table_names)) {        $table_names = array($table_names);      } // if            foreach ($table_names as $table_name) {        $this->execute('TRUNCATE ' . $this->escapeField($table_name));      } // foreach            return true;          } // emptyTables        /**    * This function will return array of table names and their CREATE TABLE commands    *    * @access public    * @param void    * @return array or NULL if there are no tables in database    */    function exportDatabaseStructure() {      $tables = $this->listTables();      if (!is_array($tables) || !count($tables)) {        return null;      } // if      $create_commands = array();      foreach ($tables as $table) {        $create_command = $this->exportTableStructure($table);        if (trim($create_command) <> '') {          $create_commands[$table] = $create_command;        } // if      } // foreach      return count($create_commands) ? $create_commands : null;    } // exportDatabaseStructure        /**    * This function is able to import database construction from any connected adapter    *    * @access public    * @param AbstractDBAdapter $adapter    * @param boolean $clear Clean up the database before execution    * @return boolean    */    function importDatabaseStructure(AbstractDBAdapter $adapter, $clear = false) {      if ($clear) {        $this->clearDatabase();      } // if      $structure = $adapter->exportDatabaseStructure();      if (is_array($structure)) {        foreach ($structure as $table_name => $table_construction) {          $this->execute($table_construction);        } // foreach      } // if    } // importDatabaseStructure        /**    * Return CREATE TABLE sql for specific table    *    * @access public    * @param string $table_name    * @return string or NULL if table does not exists    */    function exportTableStructure($table_name) {      $result = $this->executeOne('SHOW CREATE TABLE ' . $this->escapeField($table_name));      return array_var($result, 'Create Table');    } // exportTableStructure        /**    * Escape name of table field or name of the table    *    * @access public    * @param string $field    * @return string    */    function escapeField($field) {      return '`' . trim($field) . '`';    } // escapeField        /**    * Escape value before use it in query. This function makes difference between NULL, scalar    * and DateTime values    *    * @access public    * @param mixed $unescaped Value that need to be escaped    * @return string    */    function escapeValue($unescaped) {      if (is_null($unescaped)) {        return 'NULL';      } // if            if (is_bool($unescaped)) {        return $unescaped ? "'1'" : "'0'";      } // if            if (is_array($unescaped)) {        $escaped_array = array();        foreach ($unescaped as $unescaped_value) {          $escaped_array[] = self::escapeValue($unescaped_value);        }        return implode(', ', $escaped_array);      } // if            if (is_object($unescaped) && ($unescaped instanceof DateTimeValue)) {        return "'" . mysql_real_escape_string($unescaped->toMySQL()) . "'";      } // if            return "'" . mysql_real_escape_string($unescaped, $this->link) . "'";    } // escapeValue        /**    * Fetch row from query result    *    * @access public    * @param resource $resource    * @return array    */    function fetchRow($resource) {      return mysql_fetch_assoc($resource);    } // fetchRow        /**    * Return number of rows in specific query result    *    * @access public    * @param resource $resource    * @return integer    */    function numRows($resource) {      return mysql_num_rows($resource);    } // numRows        /**    * Free database result    *    * @access public    * @param resource $resource    * @return boolean    */    function freeResult($resource) {      return mysql_free_result($resource);    } // freeResult      } // MysqlDBAdapter?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -