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

📄 database_interface.lib.php

📁 架設ROSE私服必備之物 ROSE數據庫
💻 PHP
📖 第 1 页 / 共 4 页
字号:
                    `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() * * @deprecated by PMA_DBI_get_columns() or 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 * @return  array   column info */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;}/** * array PMA_DBI_get_columns(string $database, string $table, bool $full = false, mysql db link $link = null) * * @param   string  $database   name of database * @param   string  $table      name of table to retrieve columns from * @param   boolean $full       wether to return full info or only column names * @param   mixed   $link       mysql link resource * @return  array   column names */function PMA_DBI_get_columns($database, $table, $full = false, $link = null){    $fields = PMA_DBI_fetch_result(        'SHOW ' . ($full ? 'FULL' : '') . ' COLUMNS        FROM ' . PMA_backquote($database) . '.' . PMA_backquote($table),        'Fields', ($full ? null : 'Fields'), $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 */function PMA_DBI_postConnect($link, $is_controluser = false){    if (!defined('PMA_MYSQL_INT_VERSION')) {        $mysql_version = PMA_DBI_fetch_value(            'SELECT VERSION()', 0, 0, $link, PMA_DBI_QUERY_STORE);        if ( $mysql_version ) {            $match = explode('.', $mysql_version);            define('PMA_MYSQL_INT_VERSION',                (int) sprintf('%d%02d%02d', $match[0], $match[1],                        intval($match[2])));            define('PMA_MYSQL_STR_VERSION', $mysql_version);            unset($mysql_version, $match);        } else {            define('PMA_MYSQL_INT_VERSION', 32332);            define('PMA_MYSQL_STR_VERSION', '3.23.32');        }    }    if (!defined('PMA_ENGINE_KEYWORD')) {        if (PMA_MYSQL_INT_VERSION >= 40102) {            define('PMA_ENGINE_KEYWORD','ENGINE');        } else {            define('PMA_ENGINE_KEYWORD','TYPE');        }    }    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'] = 'utf-8';                define('PMA_LANG_RELOAD', 1);            }        }        // and we remove the non-UTF-8 choices to avoid confusion        if (!defined('PMA_REMOVED_NON_UTF_8')) {            foreach ( $GLOBALS['available_languages'] as $each_lang => $dummy ) {                if ( substr($each_lang, -5) != 'utf-8' ) {                    unset( $GLOBALS['available_languages'][$each_lang] );                }            }            define('PMA_REMOVED_NON_UTF_8', 1);        }        $mysql_charset = $GLOBALS['mysql_charset_map'][$GLOBALS['charset']];        if ( $is_controluser          || empty($GLOBALS['collation_connection'])          || (strpos($GLOBALS['collation_connection'], '_')                ? substr($GLOBALS['collation_connection'], 0, strpos($GLOBALS['collation_connection'], '_'))                : $GLOBALS['collation_connection']) == $mysql_charset) {            PMA_DBI_query('SET NAMES ' . $mysql_charset . ';', $link,                PMA_DBI_QUERY_STORE);        } else {            PMA_DBI_query('SET CHARACTER SET ' . $mysql_charset . ';', $link,                PMA_DBI_QUERY_STORE);        }        if (!empty($GLOBALS['collation_connection'])) {            PMA_DBI_query('SET collation_connection = \'' . $GLOBALS['collation_connection'] . '\';',                $link, PMA_DBI_QUERY_STORE);        }        if (!$is_controluser) {            $GLOBALS['collation_connection'] = PMA_DBI_get_variable('collation_connection',                PMA_DBI_GETVAR_SESSION, $link);            $GLOBALS['charset_connection']   = PMA_DBI_get_variable('character_set_connection',                PMA_DBI_GETVAR_SESSION, $link);        }        // Add some field types to the list, this needs to be done once per session!        if ($GLOBALS['cfg']['ColumnTypes'][count($GLOBALS['cfg']['ColumnTypes']) - 1] != 'VARBINARY') {            $GLOBALS['cfg']['ColumnTypes'][] = 'BINARY';            $GLOBALS['cfg']['ColumnTypes'][] = 'VARBINARY';        }    } else {        require_once('./libraries/charset_conversion.lib.php');    }}/** * returns a single value from the given result or query, * if the query or the result has more than one row or field * the first field of the first row is returned * * <code> * $sql = 'SELECT `name` FROM `user` WHERE `id` = 123'; * $user_name = PMA_DBI_fetch_value( $sql ); * // produces * // $user_name = 'John Doe' * </code> * * @uses    is_string() * @uses    is_int() * @uses    PMA_DBI_try_query() * @uses    PMA_DBI_num_rows() * @uses    PMA_DBI_fetch_row() * @uses    PMA_DBI_fetch_assoc() * @uses    PMA_DBI_free_result() * @param   string|mysql_result $result query or mysql result * @param   integer             $row_number row to fetch the value from, *                                      starting at 0, with 0 beeing default * @param   integer|string      $field  field to fetch the value from, *                                      starting at 0, with 0 beeing default * @param   resource            $link   mysql link * @param   mixed               $options * @return  mixed               value of first field in first row from result *                              or false if not found */function PMA_DBI_fetch_value( $result, $row_number = 0, $field = 0, $link = null, $options = 0 ) {    $value = false;

⌨️ 快捷键说明

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