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

📄 table.class.php

📁 phpMyAdmin图形界面化操作,我已经配置好了,只要把解要压缩后的文件放到站点下就可以用了
💻 PHP
📖 第 1 页 / 共 4 页
字号:
     *        - for views, only if MYSQL > 50013     *        - still have to handle pmadb synch.     *     * @author          Michal Cihar <michal@cihar.com>     */    static public function moveCopy($source_db, $source_table, $target_db, $target_table, $what, $move, $mode)    {        global $err_url;        // set export settings we need        $GLOBALS['sql_backquotes'] = 1;        $GLOBALS['asfile']         = 1;        // Ensure the target is valid        if (! $GLOBALS['pma']->databases->exists($source_db, $target_db)) {            if (! $GLOBALS['pma']->databases->exists($source_db)) {                $GLOBALS['message'] = PMA_Message::rawError('source database `'                    . htmlspecialchars($source_db) . '` not found');            }            if (! $GLOBALS['pma']->databases->exists($target_db)) {                $GLOBALS['message'] = PMA_Message::rawError('target database `'                    . htmlspecialchars($target_db) . '` not found');            }            return false;        }        $source = PMA_backquote($source_db) . '.' . PMA_backquote($source_table);        if (! isset($target_db) || ! strlen($target_db)) {            $target_db = $source_db;        }        // Doing a select_db could avoid some problems with replicated databases,        // when moving table from replicated one to not replicated one        PMA_DBI_select_db($target_db);        $target = PMA_backquote($target_db) . '.' . PMA_backquote($target_table);        // do not create the table if dataonly        if ($what != 'dataonly') {            require_once './libraries/export/sql.php';            $no_constraints_comments = true;            $GLOBALS['sql_constraints_query'] = '';            $sql_structure = PMA_getTableDef($source_db, $source_table, "\n", $err_url, false, false);            unset($no_constraints_comments);            $parsed_sql =  PMA_SQP_parse($sql_structure);            $analyzed_sql = PMA_SQP_analyze($parsed_sql);            $i = 0;            if (empty($analyzed_sql[0]['create_table_fields'])) {            // this is not a CREATE TABLE, so find the first VIEW                $target_for_view = PMA_backquote($target_db);                while (true) {                if ($parsed_sql[$i]['type'] == 'alpha_reservedWord' && $parsed_sql[$i]['data'] == 'VIEW') {                        break;                    }                    $i++;                }            }            unset($analyzed_sql);            $server_sql_mode = PMA_DBI_fetch_value("SHOW VARIABLES LIKE 'sql_mode'", 0, 1);            if ('ANSI_QUOTES' == $server_sql_mode) {                $table_delimiter = 'quote_double';            } else {                $table_delimiter = 'quote_backtick';            }            unset($server_sql_mode);            /* nijel: Find table name in query and replace it */            while ($parsed_sql[$i]['type'] != $table_delimiter) {                $i++;            }            /* no need to PMA_backquote() */            if (isset($target_for_view)) {                // this a view definition; we just found the first db name                // that follows DEFINER VIEW                // so change it for the new db name                        $parsed_sql[$i]['data'] = $target_for_view;                // then we have to find all references to the source db                // and change them to the target db, ensuring we stay into                // the $parsed_sql limits                $last = $parsed_sql['len'] - 1;                $backquoted_source_db = PMA_backquote($source_db);                for (++$i; $i <= $last; $i++) {                            if ($parsed_sql[$i]['type'] == $table_delimiter && $parsed_sql[$i]['data'] == $backquoted_source_db) {                                $parsed_sql[$i]['data'] = $target_for_view;                    }                }                unset($last,$backquoted_source_db);            } else {                $parsed_sql[$i]['data'] = $target;            }            /* Generate query back */            $sql_structure = PMA_SQP_formatHtml($parsed_sql, 'query_only');            // If table exists, and 'add drop table' is selected: Drop it!            $drop_query = '';            if (isset($GLOBALS['drop_if_exists'])              && $GLOBALS['drop_if_exists'] == 'true') {                if (PMA_Table::_isView($target_db,$target_table)) {                    $drop_query = 'DROP VIEW';                } else {                    $drop_query = 'DROP TABLE';                }                $drop_query .= ' IF EXISTS '                    . PMA_backquote($target_db) . '.'                    . PMA_backquote($target_table);                PMA_DBI_query($drop_query);                $GLOBALS['sql_query'] .= "\n" . $drop_query . ';';                // garvin: If an existing table gets deleted, maintain any                // entries for the PMA_* tables                $maintain_relations = true;            }            @PMA_DBI_query($sql_structure);            $GLOBALS['sql_query'] .= "\n" . $sql_structure . ';';            if (($move || isset($GLOBALS['add_constraints']))              && !empty($GLOBALS['sql_constraints_query'])) {                $parsed_sql =  PMA_SQP_parse($GLOBALS['sql_constraints_query']);                $i = 0;                // find the first $table_delimiter, it must be the source table name                while ($parsed_sql[$i]['type'] != $table_delimiter) {                    $i++;                    // maybe someday we should guard against going over limit                    //if ($i == $parsed_sql['len']) {                    //    break;                    //}                }                // replace it by the target table name, no need to PMA_backquote()                $parsed_sql[$i]['data'] = $target;                // now we must remove all $table_delimiter that follow a CONSTRAINT                // keyword, because a constraint name must be unique in a db                $cnt = $parsed_sql['len'] - 1;                for ($j = $i; $j < $cnt; $j++) {                    if ($parsed_sql[$j]['type'] == 'alpha_reservedWord'                      && strtoupper($parsed_sql[$j]['data']) == 'CONSTRAINT') {                        if ($parsed_sql[$j+1]['type'] == $table_delimiter) {                            $parsed_sql[$j+1]['data'] = '';                        }                    }                }                // Generate query back                $GLOBALS['sql_constraints_query'] = PMA_SQP_formatHtml($parsed_sql,                    'query_only');                if ($mode == 'one_table') {                    PMA_DBI_query($GLOBALS['sql_constraints_query']);                }                $GLOBALS['sql_query'] .= "\n" . $GLOBALS['sql_constraints_query'];                if ($mode == 'one_table') {                    unset($GLOBALS['sql_constraints_query']);                }            }        } else {            $GLOBALS['sql_query'] = '';        }        // Copy the data unless this is a VIEW        if (($what == 'data' || $what == 'dataonly') && ! PMA_Table::_isView($target_db,$target_table)) {            $sql_insert_data =                'INSERT INTO ' . $target . ' SELECT * FROM ' . $source;            PMA_DBI_query($sql_insert_data);            $GLOBALS['sql_query']      .= "\n\n" . $sql_insert_data . ';';        }        require_once './libraries/relation.lib.php';        $GLOBALS['cfgRelation'] = PMA_getRelationsParam();        // Drops old table if the user has requested to move it        if ($move) {            // This could avoid some problems with replicated databases, when            // moving table from replicated one to not replicated one            PMA_DBI_select_db($source_db);            if (PMA_Table::_isView($source_db,$source_table)) {                $sql_drop_query = 'DROP VIEW';            } else {                $sql_drop_query = 'DROP TABLE';            }            $sql_drop_query .= ' ' . $source;            PMA_DBI_query($sql_drop_query);            // garvin: Move old entries from PMA-DBs to new table            if ($GLOBALS['cfgRelation']['commwork']) {                $remove_query = 'UPDATE ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($GLOBALS['cfgRelation']['column_info'])                              . ' SET     table_name = \'' . PMA_sqlAddslashes($target_table) . '\', '                              . '        db_name    = \'' . PMA_sqlAddslashes($target_db) . '\''                              . ' WHERE db_name  = \'' . PMA_sqlAddslashes($source_db) . '\''                              . ' AND table_name = \'' . PMA_sqlAddslashes($source_table) . '\'';                PMA_query_as_cu($remove_query);                unset($remove_query);            }            // garvin: updating bookmarks is not possible since only a single table is moved,            // and not the whole DB.            if ($GLOBALS['cfgRelation']['displaywork']) {                $table_query = 'UPDATE ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($GLOBALS['cfgRelation']['table_info'])                                . ' SET     db_name = \'' . PMA_sqlAddslashes($target_db) . '\', '                                . '         table_name = \'' . PMA_sqlAddslashes($target_table) . '\''                                . ' WHERE db_name  = \'' . PMA_sqlAddslashes($source_db) . '\''                                . ' AND table_name = \'' . PMA_sqlAddslashes($source_table) . '\'';                PMA_query_as_cu($table_query);                unset($table_query);            }            if ($GLOBALS['cfgRelation']['relwork']) {                $table_query = 'UPDATE ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($GLOBALS['cfgRelation']['relation'])                                . ' SET     foreign_table = \'' . PMA_sqlAddslashes($target_table) . '\','                                . '         foreign_db = \'' . PMA_sqlAddslashes($target_db) . '\''                                . ' WHERE foreign_db  = \'' . PMA_sqlAddslashes($source_db) . '\''                                . ' AND foreign_table = \'' . PMA_sqlAddslashes($source_table) . '\'';                PMA_query_as_cu($table_query);                unset($table_query);                $table_query = 'UPDATE ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($GLOBALS['cfgRelation']['relation'])                                . ' SET     master_table = \'' . PMA_sqlAddslashes($target_table) . '\','                                . '         master_db = \'' . PMA_sqlAddslashes($target_db) . '\''                                . ' WHERE master_db  = \'' . PMA_sqlAddslashes($source_db) . '\''                                . ' AND master_table = \'' . PMA_sqlAddslashes($source_table) . '\'';                PMA_query_as_cu($table_query);                unset($table_query);            }            /**             * @todo garvin: Can't get moving PDFs the right way. The page numbers             * always get screwed up independently from duplication because the             * numbers do not seem to be stored on a per-database basis. Would             * the author of pdf support please have a look at it?             */            if ($GLOBALS['cfgRelation']['pdfwork']) {                $table_query = 'UPDATE ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($GLOBALS['cfgRelation']['table_coords'])                                . ' SET     table_name = \'' . PMA_sqlAddslashes($target_table) . '\','                                . '         db_name = \'' . PMA_sqlAddslashes($target_db) . '\''                                . ' WHERE db_name  = \'' . PMA_sqlAddslashes($source_db) . '\''                                . ' AND table_name = \'' . PMA_sqlAddslashes($source_table) . '\'';                PMA_query_as_cu($table_query);                unset($table_query);                /*                $pdf_query = 'SELECT pdf_page_number '                           . ' FROM ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($GLOBALS['cfgRelation']['table_coords'])                           . ' WHERE db_name  = \'' . PMA_sqlAddslashes($target_db) . '\''                           . ' AND table_name = \'' . PMA_sqlAddslashes($target_table) . '\'';                $pdf_rs = PMA_query_as_cu($pdf_query);                while ($pdf_copy_row = PMA_DBI_fetch_assoc($pdf_rs)) {                    $table_query = 'UPDATE ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($GLOBALS['cfgRelation']['pdf_pages'])                                    . ' SET     db_name = \'' . PMA_sqlAddslashes($target_db) . '\''                                    . ' WHERE db_name  = \'' . PMA_sqlAddslashes($source_db) . '\''                                    . ' AND page_nr = \'' . PMA_sqlAddslashes($pdf_copy_row['pdf_page_number']) . '\'';                    $tb_rs    = PMA_query_as_cu($table_query);                    unset($table_query);                    unset($tb_rs);                }                */            }            if ($GLOBALS['cfgRelation']['designerwork']) {                $table_query = 'UPDATE ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($GLOBALS['cfgRelation']['designer_coords'])                                . ' SET     table_name = \'' . PMA_sqlAddslashes($target_table) . '\','                                . '         db_name = \'' . PMA_sqlAddslashes($target_db) . '\''                                . ' WHERE db_name  = \'' . PMA_sqlAddslashes($source_db) . '\''                                . ' AND table_name = \'' . PMA_sqlAddslashes($source_table) . '\'';                PMA_query_as_cu($table_query);                unset($table_query);            }            $GLOBALS['sql_query']      .= "\n\n" . $sql_drop_query . ';';        // end if ($move)        } else {            // we are copying            // garvin: Create new entries as duplicates from old PMA DBs            if ($what != 'dataonly' && !isset($maintain_relations)) {                if ($GLOBALS['cfgRelation']['commwork']) {                    // Get all comments and MIME-Types for current table                    $comments_copy_query = 'SELECT                                                column_name, ' . PMA_backquote('comment') . ($GLOBALS['cfgRelation']['mimework'] ? ', mimetype, transformation, transformation_options' : '') . '                                            FROM ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($GLOBALS['cfgRelation']['column_info']) . '

⌨️ 快捷键说明

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