$tab_query = 'SHOW TABLES FROM ' . PMA_backquote($db); // [0] of the row is the name } $tab_rs = PMA_DBI_query($tab_query, null, PMA_DBI_QUERY_STORE); $selectboxall[] = ''; $selectboxall_foreign[] = ''; while ($curr_table = PMA_DBI_fetch_row($tab_rs)) { $current_table = new PMA_Table($curr_table[0], $db); // explicitely ask for non-quoted list of indexed columns $selectboxall = array_merge($selectboxall, $current_table->getUniqueColumns($backquoted = false)); // if foreign keys are supported, collect all keys from other // tables of the same engine if (PMA_foreignkey_supported($tbl_type) && isset($curr_table[1]) && strtoupper($curr_table[1]) == $tbl_type) { // explicitely ask for non-quoted list of indexed columns // need to obtain backquoted values to support dots inside values $selectboxall_foreign = array_merge($selectboxall_foreign, $current_table->getIndexedColumns($backquoted = true)); } } // end while over tables } // end if // Now find out the columns of our $table // need to use PMA_DBI_QUERY_STORE with PMA_DBI_num_rows() in mysqli $col_rs = PMA_DBI_try_query('SHOW COLUMNS FROM ' . PMA_backquote($table) . ';', null, PMA_DBI_QUERY_STORE); if ($col_rs && PMA_DBI_num_rows($col_rs) > 0) { while ($row = PMA_DBI_fetch_assoc($col_rs)) { $save_row[] = $row; } $saved_row_cnt = count($save_row); ?> <fieldset>
/** * Test for getIndexedColumns * * @return void */ public function testGetIndexedColumns() { $table = 'PMA_BookMark'; $db = 'PMA'; $table = new PMA_Table($table, $db); $return = $table->getIndexedColumns(); $expect = array('`PMA`.`PMA_BookMark`.`column1`', '`PMA`.`PMA_BookMark`.`column3`', '`PMA`.`PMA_BookMark`.`column5`', '`PMA`.`PMA_BookMark`.`ACCESSIBLE`', '`PMA`.`PMA_BookMark`.`ADD`', '`PMA`.`PMA_BookMark`.`ALL`'); $this->assertEquals($expect, $return); }
/** * Function to send html for column dropdown list * * @return void */ function PMA_sendHtmlForColumnDropdownList() { $response = PMA_Response::getInstance(); $foreignTable = $_REQUEST['foreignTable']; $table_obj = new PMA_Table($foreignTable, $_REQUEST['foreignDb']); // Since views do not have keys defined on them provide the full list of columns if (PMA_Table::isView($_REQUEST['foreignDb'], $foreignTable)) { $columnList = $table_obj->getColumns(false, false); } else { $columnList = $table_obj->getIndexedColumns(false, false); } $columns = array(); foreach ($columnList as $column) { $columns[] = htmlspecialchars($column); } $response->addJSON('columns', $columns); // @todo should be: $server->db($db)->table($table)->primary() $primary = PMA_Index::getPrimary($foreignTable, $_REQUEST['foreignDb']); if (false === $primary) { return; } $primarycols = array_keys($primary->getColumns()); $response->addJSON('primary', $primarycols); }
} else { $tab_query = 'SHOW TABLES FROM ' . PMA_backquote($db); // [0] of the row is the name } $tab_rs = PMA_DBI_query($tab_query, null, PMA_DBI_QUERY_STORE); $selectboxall[] = ''; $selectboxall_foreign[] = ''; while ($curr_table = PMA_DBI_fetch_row($tab_rs)) { $current_table = new PMA_Table($curr_table[0], $db); // explicitely ask for non-quoted list of indexed columns $selectboxall = array_merge($selectboxall, $current_table->getUniqueColumns(false)); // if foreign keys are supported, collect all keys from other // tables of the same engine if (PMA_foreignkey_supported($tbl_type) && isset($curr_table[1]) && strtoupper($curr_table[1]) == $tbl_type) { // explicitely ask for non-quoted list of indexed columns $selectboxall_foreign = array_merge($selectboxall_foreign, $current_table->getIndexedColumns(false)); } } // end while over tables } // end if // Now find out the columns of our $table // need to use PMA_DBI_QUERY_STORE with PMA_DBI_num_rows() in mysqli $col_rs = PMA_DBI_try_query('SHOW COLUMNS FROM ' . PMA_backquote($table) . ';', null, PMA_DBI_QUERY_STORE); if ($col_rs && PMA_DBI_num_rows($col_rs) > 0) { while ($row = PMA_DBI_fetch_assoc($col_rs)) { $save_row[] = $row; } $saved_row_cnt = count($save_row); ?> <fieldset>
/** * Function to send html for column dropdown list * * @return void */ function PMA_sendHtmlForColumnDropdownList() { $response = PMA_Response::getInstance(); $foreignTable = $_REQUEST['foreignTable']; $table_obj = new PMA_Table($foreignTable, $_REQUEST['foreignDb']); $columns = array(); foreach ($table_obj->getIndexedColumns(false, false) as $column) { $columns[] = htmlspecialchars($column); } $response->addJSON('columns', $columns); }
require_once 'libraries/Template.class.php'; require_once 'libraries/Table.class.php'; require_once 'libraries/structure.lib.php'; $response = PMA_Response::getInstance(); // Send table of column names to populate corresponding dropdowns depending // on the current selection if (isset($_REQUEST['getDropdownValues']) && $_REQUEST['getDropdownValues'] === 'true') { if (isset($_REQUEST['foreignTable'])) { // if both db and table are selected $foreignTable = $_REQUEST['foreignTable']; $table_obj = new PMA_Table($foreignTable, $_REQUEST['foreignDb']); // Since views do not have keys defined on them provide the full list of columns if (PMA_Table::isView($_REQUEST['foreignDb'], $foreignTable)) { $columnList = $table_obj->getColumns(false, false); } else { $columnList = $table_obj->getIndexedColumns(false, false); } $columns = array(); foreach ($columnList as $column) { $columns[] = htmlspecialchars($column); } $response->addJSON('columns', $columns); // @todo should be: $server->db($db)->table($table)->primary() $primary = PMA_Index::getPrimary($foreignTable, $_REQUEST['foreignDb']); if (false === $primary) { return; } $primarycols = array_keys($primary->getColumns()); $response->addJSON('primary', $primarycols); } else { // if only the db is selected
$selectboxall = array_merge( $selectboxall, $current_table->getUniqueColumns($backquoted = false) ); // if foreign keys are supported, collect all keys from other // tables of the same engine if (PMA_Util::isForeignKeySupported($tbl_storage_engine) && isset($curr_table[1]) && strtoupper($curr_table[1]) == $tbl_storage_engine ) { // explicitely ask for non-quoted list of indexed columns // need to obtain backquoted values to support dots inside values $selectboxall_foreign = array_merge( $selectboxall_foreign, $current_table->getIndexedColumns($backquoted = true) ); } } // end while over tables } // end if // Now find out the columns of our $table // need to use PMA_DBI_QUERY_STORE with PMA_DBI_num_rows() in mysqli $columns = PMA_DBI_get_columns($db, $table); if (count($columns) > 0) { foreach ($columns as $row) { $save_row[] = $row; } $saved_row_cnt = count($save_row); ?>