selectDb($db);
$result = $GLOBALS['dbi']->query(
'SHOW KEYS FROM ' . PMA_Util::backquote($table) . ';'
);
$primary = '';
while ($row = $GLOBALS['dbi']->fetchAssoc($result)) {
// Backups the list of primary keys
if ($row['Key_name'] == 'PRIMARY') {
$primary .= $row['Column_name'] . ', ';
}
} // end while
$GLOBALS['dbi']->freeResult($result);
if (empty($primary)) {
// no primary key, so we can safely create new
unset($submit_mult);
$query_type = 'primary_fld';
$mult_btn = __('Yes');
} else {
// primary key exists, so lets as user
$what = 'primary_fld';
}
break;
case 'index':
unset($submit_mult);
$query_type = 'index_fld';
$mult_btn = __('Yes');
break;
case 'unique':
unset($submit_mult);
$query_type = 'unique_fld';
$mult_btn = __('Yes');
break;
case 'spatial':
unset($submit_mult);
$query_type = 'spatial_fld';
$mult_btn = __('Yes');
break;
case 'ftext':
unset($submit_mult);
$query_type = 'fulltext_fld';
$mult_btn = __('Yes');
break;
case 'change':
PMA_displayHtmlForColumnChange($db, $table, $selected, $action);
// execution stops here but PMA_Response correctly finishes
// the rendering
exit;
case 'browse':
// this should already be handled by tbl_structure.php
}
} else {
// coming from browsing - do something with selected rows
$what = 'row_delete';
$selected = $rows_to_delete;
}
} // end if
$views = $GLOBALS['dbi']->getVirtualTables($db);
/**
* Displays the confirmation form if required
*/
if (!empty($submit_mult) && !empty($what)) {
unset($message);
if (strlen($table)) {
include './libraries/tbl_common.inc.php';
$url_query .= '&goto=tbl_sql.php&back=tbl_sql.php';
include './libraries/tbl_info.inc.php';
} elseif (strlen($db)) {
include './libraries/db_common.inc.php';
include './libraries/db_info.inc.php';
} else {
include_once './libraries/server_common.inc.php';
}
// Builds the query
$full_query = '';
if ($what == 'drop_tbl') {
$full_query_views = '';
}
$selected_cnt = count($selected);
$i = 0;
foreach ($selected as $idx => $sval) {
switch ($what) {
case 'row_delete':
$full_query .= 'DELETE FROM ' . PMA_Util::backquote($db) . '.' . PMA_Util::backquote($table)
. ' WHERE ' . urldecode($sval) . ' LIMIT 1'
. ';
';
break;
case 'drop_db':
$full_query .= 'DROP DATABASE '
. PMA_Util::backquote(htmlspecialchars($sval))
. ';
';
$reload = 1;
break;
case 'drop_tbl':
$current = $sval;
if (!empty($views) && in_array($current, $views)) {
$full_query_views .= (empty($full_query_views) ? 'DROP VIEW ' : ', ')
. PMA_Util::backquote(htmlspecialchars($current));
} else {
$full_query .= (empty($full_query) ? 'DROP TABLE ' : ', ')
. PMA_Util::backquote(htmlspecialchars($current));
}
break;
case 'empty_tbl':
$full_query .= 'TRUNCATE ';
$full_query .= PMA_Util::backquote(htmlspecialchars($sval))
. ';
';
break;
case 'primary_fld':
if ($full_query == '') {
$full_query .= 'ALTER TABLE '
. PMA_Util::backquote(htmlspecialchars($table))
. '
DROP PRIMARY KEY,'
. '
ADD PRIMARY KEY('
. '
'
. PMA_Util::backquote(htmlspecialchars($sval))
. ',';
} else {
$full_query .= '
'
. PMA_Util::backquote(htmlspecialchars($sval))
. ',';
}
if ($i == $selected_cnt-1) {
$full_query = preg_replace('@,$@', ');
', $full_query);
}
break;
case 'drop_fld':
if ($full_query == '') {
$full_query .= 'ALTER TABLE '
. PMA_Util::backquote(htmlspecialchars($table));
}
$full_query .= '
DROP '
. PMA_Util::backquote(htmlspecialchars($sval))
. ',';
if ($i == $selected_cnt - 1) {
$full_query = preg_replace('@,$@', ';
', $full_query);
}
break;
} // end switch
$i++;
}
if ($what == 'drop_tbl') {
if (!empty($full_query)) {
$full_query .= ';
' . "\n";
}
if (!empty($full_query_views)) {
$full_query .= $full_query_views . ';
' . "\n";
}
unset($full_query_views);
}
// Displays the confirmation form
$_url_params = array(
'query_type' => $what,
'reload' => (! empty($reload) ? 1 : 0),
);
if (strpos(' ' . $action, 'db_') == 1) {
$_url_params['db']= $db;
} elseif (strpos(' ' . $action, 'tbl_') == 1 || $what == 'row_delete') {
$_url_params['db']= $db;
$_url_params['table']= $table;
}
foreach ($selected as $idx => $sval) {
if ($what == 'row_delete') {
$_url_params['selected'][] = 'DELETE FROM '
. PMA_Util::backquote($db) . '.' . PMA_Util::backquote($table)
. ' WHERE ' . urldecode($sval) . ' LIMIT 1;';
} else {
$_url_params['selected'][] = $sval;
}
}
if ($what == 'drop_tbl' && !empty($views)) {
foreach ($views as $current) {
$_url_params['views'][] = $current;
}
}
if ($what == 'row_delete') {
$_url_params['original_sql_query'] = $original_sql_query;
if (! empty($original_url_query)) {
$_url_params['original_url_query'] = $original_url_query;
}
}
if ($what == 'replace_prefix_tbl' || $what == 'copy_tbl_change_prefix') {
echo '