📄 database_interface.lib.php
字号:
`AVG_ROW_LENGTH` AS `Avg_row_length`, `DATA_LENGTH` AS `Data_length`, `MAX_DATA_LENGTH` AS `Max_data_length`, `INDEX_LENGTH` AS `Index_length`, `DATA_FREE` AS `Data_free`, `AUTO_INCREMENT` AS `Auto_increment`, `CREATE_TIME` AS `Create_time`, `UPDATE_TIME` AS `Update_time`, `CHECK_TIME` AS `Check_time`, `TABLE_COLLATION` AS `Collation`, `CHECKSUM` AS `Checksum`, `CREATE_OPTIONS` AS `Create_options`, `TABLE_COMMENT` AS `Comment` FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = \'' . addslashes( $database ) . '\' ' . $sql_where_table; $tables = PMA_DBI_fetch_result( $sql, 'TABLE_NAME', NULL, $link ); unset( $sql_where_table, $sql ); } else { if ( true === $tbl_is_group ) { $sql = 'SHOW TABLE STATUS FROM ' . PMA_backquote( addslashes( $database ) ) .' LIKE \'' . PMA_escape_mysql_wildcards( addslashes( $table ) ) . '%\''; } else { $sql = 'SHOW TABLE STATUS FROM ' . PMA_backquote( addslashes( $database ) ) . ';'; } $tables = PMA_DBI_fetch_result( $sql, 'Name', NULL, $link ); foreach ( $tables as $table_name => $each_table ) { if ( 'comment' === $tbl_is_group && 0 === strpos( $each_table['Comment'], $table ) ) { // remove table from list unset( $tables[$table_name] ); continue; } if ( ! isset( $tables[$table_name]['Type'] ) && isset( $tables[$table_name]['Engine'] ) ) { // pma BC, same parts of PMA still uses 'Type' $tables[$table_name]['Type'] =& $tables[$table_name]['Engine']; } elseif ( ! isset( $tables[$table_name]['Engine'] ) && isset( $tables[$table_name]['Type'] ) ) { // old MySQL reports Type, newer MySQL reports Engine $tables[$table_name]['Engine'] =& $tables[$table_name]['Type']; } // MySQL forward compatibility // so pma could use this array as if every server is of version >5.0 $tables[$table_name]['TABLE_SCHEMA'] = $database; $tables[$table_name]['TABLE_NAME'] =& $tables[$table_name]['Name']; $tables[$table_name]['ENGINE'] =& $tables[$table_name]['Engine']; $tables[$table_name]['VERSION'] =& $tables[$table_name]['Version']; $tables[$table_name]['ROW_FORMAT'] =& $tables[$table_name]['Row_format']; $tables[$table_name]['TABLE_ROWS'] =& $tables[$table_name]['Rows']; $tables[$table_name]['AVG_ROW_LENGTH'] =& $tables[$table_name]['Avg_row_length']; $tables[$table_name]['DATA_LENGTH'] =& $tables[$table_name]['Data_length']; $tables[$table_name]['MAX_DATA_LENGTH'] =& $tables[$table_name]['Max_data_length']; $tables[$table_name]['INDEX_LENGTH'] =& $tables[$table_name]['Index_length']; $tables[$table_name]['DATA_FREE'] =& $tables[$table_name]['Data_free']; $tables[$table_name]['AUTO_INCREMENT'] =& $tables[$table_name]['Auto_increment']; $tables[$table_name]['CREATE_TIME'] =& $tables[$table_name]['Create_time']; $tables[$table_name]['UPDATE_TIME'] =& $tables[$table_name]['Update_time']; $tables[$table_name]['CHECK_TIME'] =& $tables[$table_name]['Check_time']; $tables[$table_name]['TABLE_COLLATION'] =& $tables[$table_name]['Collation']; $tables[$table_name]['CHECKSUM'] =& $tables[$table_name]['Checksum']; $tables[$table_name]['CREATE_OPTIONS'] =& $tables[$table_name]['Create_options']; $tables[$table_name]['TABLE_COMMENT'] =& $tables[$table_name]['Comment']; if ( strtoupper( $tables[$table_name]['Comment'] ) === 'VIEW' ) { $tables[$table_name]['TABLE_TYPE'] = 'VIEW'; } else { // TODO difference between 'TEMPORARY' and 'BASE TABLE' // but how to detect? $tables[$table_name]['TABLE_TYPE'] = 'BASE TABLE'; } } } if ( $GLOBALS['cfg']['NaturalOrder'] ) { uksort( $tables, 'strnatcasecmp' ); } return $tables;}/** * returns array with databases containing extended infos about them * * @param string $databases database * @param boolean $force_stats retrieve stats also for MySQL < 5 * @param resource $link mysql link * @return array $databases */function PMA_DBI_get_databases_full( $database = NULL, $force_stats = false, $link = NULL ) { // initialize to avoid errors when there are no databases $databases = array(); if ( PMA_MYSQL_INT_VERSION >= 50002 ) { // get table information from information_schema if ( $database ) { $sql_where_schema = 'WHERE `SCHEMA_NAME` LIKE \'' . addslashes( $database ) . '\''; } else { $sql_where_schema = ''; } // for PMA bc: // `SCHEMA_FIELD_NAME` AS `SHOW_TABLE_STATUS_FIELD_NAME` $sql = ' SELECT `information_schema`.`SCHEMATA`.*, COUNT(`information_schema`.`TABLES`.`TABLE_SCHEMA`) AS `SCHEMA_TABLES`, SUM(`information_schema`.`TABLES`.`TABLE_ROWS`) AS `SCHEMA_TABLE_ROWS`, SUM(`information_schema`.`TABLES`.`DATA_LENGTH`) AS `SCHEMA_DATA_LENGTH`, SUM(`information_schema`.`TABLES`.`MAX_DATA_LENGTH`) AS `SCHEMA_MAX_DATA_LENGTH`, SUM(`information_schema`.`TABLES`.`INDEX_LENGTH`) AS `SCHEMA_INDEX_LENGTH`, SUM(`information_schema`.`TABLES`.`DATA_LENGTH` + `information_schema`.`TABLES`.`INDEX_LENGTH`) AS `SCHEMA_LENGTH`, SUM(`information_schema`.`TABLES`.`DATA_FREE`) AS `SCHEMA_DATA_FREE` FROM `information_schema`.`SCHEMATA` LEFT JOIN `information_schema`.`TABLES` ON `information_schema`.`TABLES`.`TABLE_SCHEMA` = `information_schema`.`SCHEMATA`.`SCHEMA_NAME` ' . $sql_where_schema . ' GROUP BY `information_schema`.`SCHEMATA`.`SCHEMA_NAME`'; $databases = PMA_DBI_fetch_result( $sql, 'SCHEMA_NAME', NULL, $link ); unset( $sql_where_schema, $sql ); } else { foreach ( PMA_DBI_get_dblist( $link ) as $database_name ) { // MySQL forward compatibility // so pma could use this array as if every server is of version >5.0 $databases[$database_name]['SCHEMA_NAME'] = $database_name; if ( $force_stats ) { require_once 'mysql_charsets.lib.php'; $databases[$database_name]['DEFAULT_COLLATION_NAME'] = PMA_getDbCollation( $database_name ); // get additonal info about tables $databases[$database_name]['SCHEMA_TABLES'] = 0; $databases[$database_name]['SCHEMA_TABLE_ROWS'] = 0; $databases[$database_name]['SCHEMA_DATA_LENGTH'] = 0; $databases[$database_name]['SCHEMA_MAX_DATA_LENGTH'] = 0; $databases[$database_name]['SCHEMA_INDEX_LENGTH'] = 0; $databases[$database_name]['SCHEMA_LENGTH'] = 0; $databases[$database_name]['SCHEMA_DATA_FREE'] = 0; $res = PMA_DBI_query('SHOW TABLE STATUS FROM ' . PMA_backquote( $database_name ) . ';'); while ( $row = PMA_DBI_fetch_assoc( $res ) ) { $databases[$database_name]['SCHEMA_TABLES']++; $databases[$database_name]['SCHEMA_TABLE_ROWS'] += $row['Rows']; $databases[$database_name]['SCHEMA_DATA_LENGTH'] += $row['Data_length']; $databases[$database_name]['SCHEMA_MAX_DATA_LENGTH'] += $row['Max_data_length']; $databases[$database_name]['SCHEMA_INDEX_LENGTH'] += $row['Index_length']; $databases[$database_name]['SCHEMA_DATA_FREE'] += $row['Data_free']; $databases[$database_name]['SCHEMA_LENGTH'] += $row['Data_length'] + $row['Index_length']; } PMA_DBI_free_result( $res ); unset( $res ); } } } if ( $GLOBALS['cfg']['NaturalOrder'] ) { uksort( $databases, 'strnatcasecmp' ); } return $databases;}function PMA_DBI_get_fields($database, $table, $link = NULL) { if (empty($link)) { if (isset($GLOBALS['userlink'])) { $link = $GLOBALS['userlink']; } else { return FALSE; } } // here we use a try_query because when coming from // tbl_create + tbl_properties.inc.php, the table does not exist $result = PMA_DBI_try_query('SHOW FULL FIELDS FROM ' . PMA_backquote($database) . '.' . PMA_backquote($table), $link); if (!$result) { return FALSE; } $fields = array(); while ($row = PMA_DBI_fetch_assoc($result)) { $fields[] = $row; } return $fields;}function PMA_DBI_get_variable($var, $type = PMA_DBI_GETVAR_SESSION, $link = NULL) { if ($link === NULL) { if (isset($GLOBALS['userlink'])) { $link = $GLOBALS['userlink']; } else { return FALSE; } } if (PMA_MYSQL_INT_VERSION < 40002) { $type = 0; } switch ($type) { case PMA_DBI_GETVAR_SESSION: $modifier = ' SESSION'; break; case PMA_DBI_GETVAR_GLOBAL: $modifier = ' GLOBAL'; break; default: $modifier = ''; } $res = PMA_DBI_query('SHOW' . $modifier . ' VARIABLES LIKE \'' . $var . '\';', $link); $row = PMA_DBI_fetch_row($res); PMA_DBI_free_result($res); if (empty($row)) { return FALSE; } else { return $row[0] == $var ? $row[1] : FALSE; }}function PMA_DBI_postConnect($link, $is_controluser = FALSE) { global $collation_connection, $charset_connection; if (!defined('PMA_MYSQL_INT_VERSION')) { $result = PMA_DBI_query('SELECT VERSION() AS version', $link, PMA_DBI_QUERY_STORE); if ($result != FALSE && @PMA_DBI_num_rows($result) > 0) { $row = PMA_DBI_fetch_row($result); $match = explode('.', $row[0]); PMA_DBI_free_result($result); } if (!isset($row)) { define('PMA_MYSQL_INT_VERSION', 32332); define('PMA_MYSQL_STR_VERSION', '3.23.32'); } else{ define('PMA_MYSQL_INT_VERSION', (int)sprintf('%d%02d%02d', $match[0], $match[1], intval($match[2]))); define('PMA_MYSQL_STR_VERSION', $row[0]); unset($result, $row, $match); } } if (PMA_MYSQL_INT_VERSION >= 40100) { // If $lang is defined and we are on MySQL >= 4.1.x, // we auto-switch the lang to its UTF-8 version (if it exists and user didn't force language) if (!empty($GLOBALS['lang']) && (substr($GLOBALS['lang'], -5) != 'utf-8') && !isset($GLOBALS['cfg']['Lang'])) { $lang_utf_8_version = substr($GLOBALS['lang'], 0, strpos($GLOBALS['lang'], '-')) . '-utf-8'; if (!empty($GLOBALS['available_languages'][$lang_utf_8_version])) { $GLOBALS['lang'] = $lang_utf_8_version; $GLOBALS['charset'] = $charset = 'utf-8'; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -