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

📄 database_interface.lib.php

📁 一个用PHP编写的
💻 PHP
📖 第 1 页 / 共 3 页
字号:
                if ( strtoupper( $each_tables[$table_name]['Comment'] ) === 'VIEW' ) {                    $each_tables[$table_name]['TABLE_TYPE'] = 'VIEW';                } else {                    // TODO difference between 'TEMPORARY' and 'BASE TABLE'                    // but how to detect?                    $each_tables[$table_name]['TABLE_TYPE'] = 'BASE TABLE';                }            }            $tables[$each_database] = $each_tables;        }    }    if ( $GLOBALS['cfg']['NaturalOrder'] ) {        foreach ( $tables as $key => $val ) {            uksort($tables[$key], 'strnatcasecmp');        }    }    if (! is_array($database)) {        if (isset($tables[$database])) {            return $tables[$database];        } elseif (isset($tables[strtolower($database)])) {            // on windows with lower_case_table_names = 1            // MySQL returns            // with SHOW DATABASES or information_schema.SCHEMATA: `Test`            // but information_schema.TABLES gives `test`            // bug #1436171            // sf.net/tracker/?func=detail&aid=1436171&group_id=23067&atid=377408            return $tables[strtolower($database)];        } else {            return $tables;        }    } else {        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;}/** * returns detailed array with all columns for given table in database, * or all tables/databases * * @param   string  $database   name of database * @param   string  $table      name of table to retrieve columns from * @param   string  $column     name of specific column * @param   mixed   $link       mysql link resource */function PMA_DBI_get_columns_full($database = null, $table = null,    $column = null, $link = null){    $columns = array();    if ( PMA_MYSQL_INT_VERSION >= 50002 ) {        $sql_wheres = array();        $array_keys = array();        // get columns information from information_schema        if ( null !== $database ) {            $sql_wheres[] = '`TABLE_SCHEMA` = \'' . addslashes($database) . '\' ';        } else {            $array_keys[] = 'TABLE_SCHEMA';        }        if (  null !== $table ) {            $sql_wheres[] = '`TABLE_NAME` = \'' . addslashes($table) . '\' ';        } else {            $array_keys[] = 'TABLE_NAME';        }        if (  null !== $column ) {            $sql_wheres[] = '`COLUMN_NAME` = \'' . addslashes($column) . '\' ';        } else {            $array_keys[] = 'COLUMN_NAME';        }        // for PMA bc:        // `[SCHEMA_FIELD_NAME]` AS `[SHOW_FULL_COLUMNS_FIELD_NAME]`        $sql = '             SELECT *,                    `COLUMN_NAME`       AS `Field`,                    `COLUMN_TYPE`       AS `Type`,                    `COLLATION_NAME`    AS `Collation`,                    `IS_NULLABLE`       AS `Null`,                    `COLUMN_KEY`        AS `Key`,                    `COLUMN_DEFAULT`    AS `Default`,                    `EXTRA`             AS `Extra`,                    `PRIVILEGES`        AS `Privileges`,                    `COLUMN_COMMENT`    AS `Comment`               FROM `information_schema`.`COLUMNS`';        if ( count($sql_wheres) ) {            $sql .= "\n" . ' WHERE ' . implode(' AND ', $sql_wheres);        }        $columns = PMA_DBI_fetch_result($sql, $array_keys, null, $link);        unset( $sql_wheres, $sql );    } else {        if ( null === $database ) {            $databases = PMA_DBI_get_dblist();            foreach ( $databases as $database ) {                $columns[$database] = PMA_DBI_get_columns_full($database, null,                    null, $link);            }            return $columns;        } elseif ( null === $table ) {            $tables = PMA_DBI_get_tables($database);            foreach ( $tables as $table ) {                $columns[$table] = PMA_DBI_get_columns_full(                    $database, $table, null, $link);            }            return $columns;        }        $sql = 'SHOW FULL COLUMNS FROM '            . PMA_backquote($database) . '.' . PMA_backquote($table);        if ( null !== $column ) {            $sql .= " LIKE '" . $column . "'";        }        $columns = PMA_DBI_fetch_result( $sql, 'Field', null, $link );        $ordinal_position = 1;        foreach ( $columns as $column_name => $each_column ) {            // MySQL forward compatibility            // so pma could use this array as if every server is of version >5.0            $columns[$column_name]['COLUMN_NAME']                 =& $columns[$column_name]['Field'];            $columns[$column_name]['COLUMN_TYPE']                 =& $columns[$column_name]['Type'];            $columns[$column_name]['COLLATION_NAME']              =& $columns[$column_name]['Collation'];            $columns[$column_name]['IS_NULLABLE']                 =& $columns[$column_name]['Null'];            $columns[$column_name]['COLUMN_KEY']                  =& $columns[$column_name]['Key'];            $columns[$column_name]['COLUMN_DEFAULT']              =& $columns[$column_name]['Default'];            $columns[$column_name]['EXTRA']                       =& $columns[$column_name]['Extra'];            $columns[$column_name]['PRIVILEGES']                  =& $columns[$column_name]['Privileges'];            $columns[$column_name]['COLUMN_COMMENT']              =& $columns[$column_name]['Comment'];            $columns[$column_name]['TABLE_CATALOG']               = null;            $columns[$column_name]['TABLE_SCHEMA']                = $database;            $columns[$column_name]['TABLE_NAME']                  = $table;            $columns[$column_name]['ORDINAL_POSITION']            = $ordinal_position;            $columns[$column_name]['DATA_TYPE']                   =                substr($columns[$column_name]['COLUMN_TYPE'], 0,                    strpos($columns[$column_name]['COLUMN_TYPE'], '('));            // @TODO guess CHARACTER_MAXIMUM_LENGTH from COLUMN_TYPE            $columns[$column_name]['CHARACTER_MAXIMUM_LENGTH']    = null;            // @TODO guess CHARACTER_OCTET_LENGTH from CHARACTER_MAXIMUM_LENGTH            $columns[$column_name]['CHARACTER_OCTET_LENGTH']      = null;            $columns[$column_name]['NUMERIC_PRECISION']           = null;            $columns[$column_name]['NUMERIC_SCALE']               = null;            $columns[$column_name]['CHARACTER_SET_NAME']          =                substr($columns[$column_name]['COLLATION_NAME'], 0,                    strpos($columns[$column_name]['COLLATION_NAME'], '_'));            $ordinal_position++;        }        if ( null !== $column ) {            reset($columns);            $columns = current($columns);        }    }    return $columns;}/** * @TODO should only return columns names, for more info use PMA_DBI_get_columns_full() * * @param   string  $database   name of database * @param   string  $table      name of table to retrieve columns from * @param   mixed   $link       mysql link resource */function PMA_DBI_get_fields($database, $table, $link = null){    // here we use a try_query because when coming from    // tbl_create + tbl_properties.inc.php, the table does not exist    $fields = PMA_DBI_fetch_result(        'SHOW FULL COLUMNS        FROM ' . PMA_backquote($database) . '.' . PMA_backquote($table),        null, null, $link);    if ( ! is_array($fields) || count($fields) < 1 ) {        return false;    }    return $fields;}/** * returns value of given mysql server variable * * @param   string  $var    mysql server variable name * @param   int     $type   PMA_DBI_GETVAR_SESSION|PMA_DBI_GETVAR_GLOBAL * @param   mixed   $link   mysql link resource|object * @return  mixed   value for mysql server variable */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 = '';    }    return PMA_DBI_fetch_value(        'SHOW' . $modifier . ' VARIABLES LIKE \'' . $var . '\';', 0, 1, $link);}/** * @uses    ./libraries/charset_conversion.lib.php * @uses    PMA_DBI_QUERY_STORE * @uses    PMA_REMOVED_NON_UTF_8 * @uses    PMA_MYSQL_INT_VERSION * @uses    PMA_MYSQL_STR_VERSION * @uses    PMA_DBI_GETVAR_SESSION * @uses    PMA_DBI_fetch_value() * @uses    PMA_DBI_query() * @uses    PMA_DBI_get_variable() * @uses    $GLOBALS['collation_connection'] * @uses    $GLOBALS['charset_connection'] * @uses    $GLOBALS['available_languages'] * @uses    $GLOBALS['mysql_charset_map'] * @uses    $GLOBALS['charset'] * @uses    $GLOBALS['lang'] * @uses    $GLOBALS['cfg']['Lang'] * @uses    $GLOBALS['cfg']['ColumnTypes'] * @uses    defined() * @uses    explode() * @uses    sprintf() * @uses    intval() * @uses    define() * @uses    defined() * @uses    substr() * @uses    count() * @param   mixed   $link   mysql link resource|object * @param   boolean $is_controluser */

⌨️ 快捷键说明

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