mult_submits.inc.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584
  1. <?php
  2. /* vim: set expandtab sw=4 ts=4 sts=4: */
  3. /**
  4. *
  5. * @package PhpMyAdmin
  6. */
  7. if (! defined('PHPMYADMIN')) {
  8. exit;
  9. }
  10. require_once 'libraries/transformations.lib.php';
  11. $request_params = array(
  12. 'clause_is_unique',
  13. 'from_prefix',
  14. 'goto',
  15. 'mult_btn',
  16. 'original_sql_query',
  17. 'query_type',
  18. 'reload',
  19. 'rows_to_delete',
  20. 'selected',
  21. 'selected_fld',
  22. 'selected_recent_table',
  23. 'sql_query',
  24. 'submit_mult',
  25. 'table_type',
  26. 'to_prefix',
  27. 'url_query'
  28. );
  29. foreach ($request_params as $one_request_param) {
  30. if (isset($_REQUEST[$one_request_param])) {
  31. $GLOBALS[$one_request_param] = $_REQUEST[$one_request_param];
  32. }
  33. }
  34. /**
  35. * Prepares the work and runs some other scripts if required
  36. */
  37. if (! empty($submit_mult)
  38. && $submit_mult != __('With selected:')
  39. && (! empty($selected_db) || ! empty($selected_tbl) || ! empty($selected_fld) || ! empty($rows_to_delete))
  40. ) {
  41. define('PMA_SUBMIT_MULT', 1);
  42. if (isset($selected_db) && !empty($selected_db)) {
  43. // coming from server database view - do something with selected databases
  44. $selected = $selected_db;
  45. $what = 'drop_db';
  46. } elseif (isset($selected_tbl) && !empty($selected_tbl)) {
  47. // coming from database structure view - do something with selected tables
  48. if ($submit_mult == 'print') {
  49. include './tbl_printview.php';
  50. } else {
  51. $selected = $selected_tbl;
  52. switch ($submit_mult) {
  53. case 'add_prefix_tbl':
  54. case 'replace_prefix_tbl':
  55. case 'copy_tbl_change_prefix':
  56. case 'drop_db':
  57. case 'drop_tbl':
  58. case 'empty_tbl':
  59. $what = $submit_mult;
  60. break;
  61. case 'check_tbl':
  62. case 'optimize_tbl':
  63. case 'repair_tbl':
  64. case 'analyze_tbl':
  65. $query_type = $submit_mult;
  66. unset($submit_mult);
  67. $mult_btn = __('Yes');
  68. break;
  69. case 'export':
  70. unset($submit_mult);
  71. include 'db_export.php';
  72. exit;
  73. break;
  74. } // end switch
  75. }
  76. } elseif (isset($selected_fld) && !empty($selected_fld)) {
  77. // coming from table structure view - do something with selected columns/fileds
  78. $selected = $selected_fld;
  79. switch ($submit_mult) {
  80. case 'drop':
  81. $what = 'drop_fld';
  82. break;
  83. case 'primary':
  84. // Gets table primary key
  85. PMA_DBI_select_db($db);
  86. $result = PMA_DBI_query('SHOW KEYS FROM ' . PMA_Util::backquote($table) . ';');
  87. $primary = '';
  88. while ($row = PMA_DBI_fetch_assoc($result)) {
  89. // Backups the list of primary keys
  90. if ($row['Key_name'] == 'PRIMARY') {
  91. $primary .= $row['Column_name'] . ', ';
  92. }
  93. } // end while
  94. PMA_DBI_free_result($result);
  95. if (empty($primary)) {
  96. // no primary key, so we can safely create new
  97. unset($submit_mult);
  98. $query_type = 'primary_fld';
  99. $mult_btn = __('Yes');
  100. } else {
  101. // primary key exists, so lets as user
  102. $what = 'primary_fld';
  103. }
  104. break;
  105. case 'index':
  106. unset($submit_mult);
  107. $query_type = 'index_fld';
  108. $mult_btn = __('Yes');
  109. break;
  110. case 'unique':
  111. unset($submit_mult);
  112. $query_type = 'unique_fld';
  113. $mult_btn = __('Yes');
  114. break;
  115. case 'spatial':
  116. unset($submit_mult);
  117. $query_type = 'spatial_fld';
  118. $mult_btn = __('Yes');
  119. break;
  120. case 'ftext':
  121. unset($submit_mult);
  122. $query_type = 'fulltext_fld';
  123. $mult_btn = __('Yes');
  124. break;
  125. case 'change':
  126. PMA_displayHtmlForColumnChange($db, $table, $selected, $action);
  127. // execution stops here but PMA_Response correctly finishes
  128. // the rendering
  129. exit;
  130. case 'browse':
  131. // this should already be handled by tbl_structure.php
  132. }
  133. } else {
  134. // coming from browsing - do something with selected rows
  135. $what = 'row_delete';
  136. $selected = $rows_to_delete;
  137. }
  138. } // end if
  139. $views = PMA_DBI_getVirtualTables($db);
  140. /**
  141. * Displays the confirmation form if required
  142. */
  143. if (!empty($submit_mult) && !empty($what)) {
  144. unset($message);
  145. if (strlen($table)) {
  146. include './libraries/tbl_common.inc.php';
  147. $url_query .= '&amp;goto=tbl_sql.php&amp;back=tbl_sql.php';
  148. include './libraries/tbl_info.inc.php';
  149. } elseif (strlen($db)) {
  150. include './libraries/db_common.inc.php';
  151. include './libraries/db_info.inc.php';
  152. } else {
  153. include_once './libraries/server_common.inc.php';
  154. }
  155. // Builds the query
  156. $full_query = '';
  157. if ($what == 'drop_tbl') {
  158. $full_query_views = '';
  159. }
  160. $selected_cnt = count($selected);
  161. $i = 0;
  162. foreach ($selected AS $idx => $sval) {
  163. switch ($what) {
  164. case 'row_delete':
  165. $full_query .= 'DELETE FROM '
  166. . PMA_Util::backquote(htmlspecialchars($db))
  167. . '.' . PMA_Util::backquote(htmlspecialchars($table))
  168. // Do not append a "LIMIT 1" clause here
  169. // (it's not binlog friendly).
  170. // We don't need the clause because the calling panel permits
  171. // this feature only when there is a unique index.
  172. . ' WHERE ' . htmlspecialchars(urldecode($sval))
  173. . ';<br />';
  174. break;
  175. case 'drop_db':
  176. $full_query .= 'DROP DATABASE '
  177. . PMA_Util::backquote(htmlspecialchars($sval))
  178. . ';<br />';
  179. $reload = 1;
  180. break;
  181. case 'drop_tbl':
  182. $current = $sval;
  183. if (!empty($views) && in_array($current, $views)) {
  184. $full_query_views .= (empty($full_query_views) ? 'DROP VIEW ' : ', ')
  185. . PMA_Util::backquote(htmlspecialchars($current));
  186. } else {
  187. $full_query .= (empty($full_query) ? 'DROP TABLE ' : ', ')
  188. . PMA_Util::backquote(htmlspecialchars($current));
  189. }
  190. break;
  191. case 'empty_tbl':
  192. $full_query .= 'TRUNCATE ';
  193. $full_query .= PMA_Util::backquote(htmlspecialchars($sval))
  194. . ';<br />';
  195. break;
  196. case 'primary_fld':
  197. if ($full_query == '') {
  198. $full_query .= 'ALTER TABLE '
  199. . PMA_Util::backquote(htmlspecialchars($table))
  200. . '<br />&nbsp;&nbsp;DROP PRIMARY KEY,'
  201. . '<br />&nbsp;&nbsp; ADD PRIMARY KEY('
  202. . '<br />&nbsp;&nbsp;&nbsp;&nbsp; '
  203. . PMA_Util::backquote(htmlspecialchars($sval))
  204. . ',';
  205. } else {
  206. $full_query .= '<br />&nbsp;&nbsp;&nbsp;&nbsp; '
  207. . PMA_Util::backquote(htmlspecialchars($sval))
  208. . ',';
  209. }
  210. if ($i == $selected_cnt-1) {
  211. $full_query = preg_replace('@,$@', ');<br />', $full_query);
  212. }
  213. break;
  214. case 'drop_fld':
  215. if ($full_query == '') {
  216. $full_query .= 'ALTER TABLE '
  217. . PMA_Util::backquote(htmlspecialchars($table));
  218. }
  219. $full_query .= '<br />&nbsp;&nbsp;DROP '
  220. . PMA_Util::backquote(htmlspecialchars($sval))
  221. . ',';
  222. if ($i == $selected_cnt - 1) {
  223. $full_query = preg_replace('@,$@', ';<br />', $full_query);
  224. }
  225. break;
  226. } // end switch
  227. $i++;
  228. }
  229. if ($what == 'drop_tbl') {
  230. if (!empty($full_query)) {
  231. $full_query .= ';<br />' . "\n";
  232. }
  233. if (!empty($full_query_views)) {
  234. $full_query .= $full_query_views . ';<br />' . "\n";
  235. }
  236. unset($full_query_views);
  237. }
  238. // Displays the confirmation form
  239. $_url_params = array(
  240. 'query_type' => $what,
  241. 'reload' => (! empty($reload) ? 1 : 0),
  242. );
  243. if (strpos(' ' . $action, 'db_') == 1) {
  244. $_url_params['db']= $db;
  245. } elseif (strpos(' ' . $action, 'tbl_') == 1 || $what == 'row_delete') {
  246. $_url_params['db']= $db;
  247. $_url_params['table']= $table;
  248. }
  249. foreach ($selected as $idx => $sval) {
  250. if ($what == 'row_delete') {
  251. $_url_params['selected'][] = 'DELETE FROM ' . PMA_Util::backquote($db) . '.' . PMA_Util::backquote($table)
  252. . ' WHERE ' . urldecode($sval) . ' LIMIT 1;';
  253. } else {
  254. $_url_params['selected'][] = $sval;
  255. }
  256. }
  257. if ($what == 'drop_tbl' && !empty($views)) {
  258. foreach ($views as $current) {
  259. $_url_params['views'][] = $current;
  260. }
  261. }
  262. if ($what == 'row_delete') {
  263. $_url_params['original_sql_query'] = $original_sql_query;
  264. if (! empty($original_url_query)) {
  265. $_url_params['original_url_query'] = $original_url_query;
  266. }
  267. }
  268. if ($what == 'replace_prefix_tbl' || $what == 'copy_tbl_change_prefix') { ?>
  269. <form action="<?php echo $action; ?>" method="post">
  270. <?php echo PMA_generate_common_hidden_inputs($_url_params); ?>
  271. <fieldset class = "input">
  272. <legend><?php echo ($what == 'replace_prefix_tbl' ? __('Replace table prefix') : __('Copy table with prefix')) ?>:</legend>
  273. <table>
  274. <tr>
  275. <td><?php echo __('From'); ?></td><td><input type="text" name="from_prefix" id="initialPrefix" /></td>
  276. </tr>
  277. <tr>
  278. <td><?php echo __('To'); ?> </td><td><input type="text" name="to_prefix" id="newPrefix" /></td>
  279. </tr>
  280. </table>
  281. </fieldset>
  282. <fieldset class="tblFooters">
  283. <input type="hidden" name="mult_btn" value="<?php echo __('Yes'); ?>" />
  284. <input type="submit" value="<?php echo __('Submit'); ?>" id="buttonYes" />
  285. </fieldset>
  286. </form>
  287. <?php
  288. } elseif ($what == 'add_prefix_tbl') { ?>
  289. <form action="<?php echo $action; ?>" method="post">
  290. <?php echo PMA_generate_common_hidden_inputs($_url_params); ?>
  291. <fieldset class = "input">
  292. <legend><?php echo __('Add table prefix') ?>:</legend>
  293. <table>
  294. <tr>
  295. <td><?php echo __('Add prefix'); ?></td> <td><input type="text" name="add_prefix" id="txtPrefix" /></td>
  296. </tr>
  297. </table>
  298. </fieldset>
  299. <fieldset class="tblFooters">
  300. <input type="hidden" name="mult_btn" value="<?php echo __('Yes'); ?>" />
  301. <input type="submit" value="<?php echo __('Submit'); ?>" id="buttonYes" />
  302. </fieldset>
  303. </form>
  304. <?php
  305. } else { ?>
  306. <fieldset class="confirmation">
  307. <legend><?php
  308. if ($what == 'drop_db') {
  309. echo __('You are about to DESTROY a complete database!') . '&nbsp;';
  310. }
  311. echo __('Do you really want to execute the following query?');
  312. ?>:</legend>
  313. <code><?php echo $full_query; ?></code>
  314. </fieldset>
  315. <fieldset class="tblFooters">
  316. <form action="<?php echo $action; ?>" method="post">
  317. <?php
  318. echo PMA_generate_common_hidden_inputs($_url_params);
  319. // Display option to disable foreign key checks while dropping tables
  320. if ($what == 'drop_tbl') { ?>
  321. <div id="foreignkeychk">
  322. <span class="fkc_switch"><?php echo __('Foreign key check:'); ?></span>
  323. <span class="checkbox"><input type="checkbox" name="fk_check" value="1" id="fkc_checkbox"<?php
  324. $default_fk_check_value = (PMA_DBI_fetch_value('SHOW VARIABLES LIKE \'foreign_key_checks\';', 0, 1) == 'ON') ? 1 : 0;
  325. echo ($default_fk_check_value) ? ' checked="checked"' : '' ?>/></span>
  326. <span id="fkc_status" class="fkc_switch"><?php echo ($default_fk_check_value) ? __('(Enabled)') : __('(Disabled)'); ?></span>
  327. </div><?php
  328. } ?>
  329. <input type="hidden" name="mult_btn" value="<?php echo __('Yes'); ?>" />
  330. <input type="submit" value="<?php echo __('Yes'); ?>" id="buttonYes" />
  331. </form>
  332. <form action="<?php echo $action; ?>" method="post">
  333. <?php echo PMA_generate_common_hidden_inputs($_url_params); ?>
  334. <input type="hidden" name="mult_btn" value="<?php echo __('No'); ?>" />
  335. <input type="submit" value="<?php echo __('No'); ?>" id="buttonNo" />
  336. </form>
  337. </fieldset>
  338. <?php
  339. }
  340. exit;
  341. } elseif (! empty($mult_btn) && $mult_btn == __('Yes')) {
  342. /**
  343. * Executes the query - dropping rows, columns/fields, tables or dbs
  344. */
  345. if ($query_type == 'drop_db' || $query_type == 'drop_tbl' || $query_type == 'drop_fld') {
  346. include_once './libraries/relation_cleanup.lib.php';
  347. }
  348. $sql_query = '';
  349. if ($query_type == 'drop_tbl') {
  350. $sql_query_views = '';
  351. }
  352. $selected_cnt = count($selected);
  353. $run_parts = false; // whether to run query after each pass
  354. $use_sql = false; // whether to include sql.php at the end (to display results)
  355. if ($query_type == 'primary_fld') {
  356. // Gets table primary key
  357. PMA_DBI_select_db($db);
  358. $result = PMA_DBI_query('SHOW KEYS FROM ' . PMA_Util::backquote($table) . ';');
  359. $primary = '';
  360. while ($row = PMA_DBI_fetch_assoc($result)) {
  361. // Backups the list of primary keys
  362. if ($row['Key_name'] == 'PRIMARY') {
  363. $primary .= $row['Column_name'] . ', ';
  364. }
  365. } // end while
  366. PMA_DBI_free_result($result);
  367. }
  368. $rebuild_database_list = false;
  369. for ($i = 0; $i < $selected_cnt; $i++) {
  370. switch ($query_type) {
  371. case 'row_delete':
  372. $a_query = $selected[$i];
  373. $run_parts = true;
  374. break;
  375. case 'drop_db':
  376. PMA_relationsCleanupDatabase($selected[$i]);
  377. $a_query = 'DROP DATABASE '
  378. . PMA_Util::backquote($selected[$i]);
  379. $reload = 1;
  380. $run_parts = true;
  381. $rebuild_database_list = true;
  382. break;
  383. case 'drop_tbl':
  384. PMA_relationsCleanupTable($db, $selected[$i]);
  385. $current = $selected[$i];
  386. if (!empty($views) && in_array($current, $views)) {
  387. $sql_query_views .= (empty($sql_query_views) ? 'DROP VIEW ' : ', ')
  388. . PMA_Util::backquote($current);
  389. } else {
  390. $sql_query .= (empty($sql_query) ? 'DROP TABLE ' : ', ')
  391. . PMA_Util::backquote($current);
  392. }
  393. $reload = 1;
  394. break;
  395. case 'check_tbl':
  396. $sql_query .= (empty($sql_query) ? 'CHECK TABLE ' : ', ')
  397. . PMA_Util::backquote($selected[$i]);
  398. $use_sql = true;
  399. break;
  400. case 'optimize_tbl':
  401. $sql_query .= (empty($sql_query) ? 'OPTIMIZE TABLE ' : ', ')
  402. . PMA_Util::backquote($selected[$i]);
  403. $use_sql = true;
  404. break;
  405. case 'analyze_tbl':
  406. $sql_query .= (empty($sql_query) ? 'ANALYZE TABLE ' : ', ')
  407. . PMA_Util::backquote($selected[$i]);
  408. $use_sql = true;
  409. break;
  410. case 'repair_tbl':
  411. $sql_query .= (empty($sql_query) ? 'REPAIR TABLE ' : ', ')
  412. . PMA_Util::backquote($selected[$i]);
  413. $use_sql = true;
  414. break;
  415. case 'empty_tbl':
  416. $a_query = 'TRUNCATE ';
  417. $a_query .= PMA_Util::backquote($selected[$i]);
  418. $run_parts = true;
  419. break;
  420. case 'drop_fld':
  421. PMA_relationsCleanupColumn($db, $table, $selected[$i]);
  422. $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_Util::backquote($table) : ',')
  423. . ' DROP ' . PMA_Util::backquote($selected[$i])
  424. . (($i == $selected_cnt-1) ? ';' : '');
  425. break;
  426. case 'primary_fld':
  427. $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_Util::backquote($table) . (empty($primary) ? '' : ' DROP PRIMARY KEY,') . ' ADD PRIMARY KEY( ' : ', ')
  428. . PMA_Util::backquote($selected[$i])
  429. . (($i == $selected_cnt-1) ? ');' : '');
  430. break;
  431. case 'index_fld':
  432. $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_Util::backquote($table) . ' ADD INDEX( ' : ', ')
  433. . PMA_Util::backquote($selected[$i])
  434. . (($i == $selected_cnt-1) ? ');' : '');
  435. break;
  436. case 'unique_fld':
  437. $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_Util::backquote($table) . ' ADD UNIQUE( ' : ', ')
  438. . PMA_Util::backquote($selected[$i])
  439. . (($i == $selected_cnt-1) ? ');' : '');
  440. break;
  441. case 'spatial_fld':
  442. $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_Util::backquote($table) . ' ADD SPATIAL( ' : ', ')
  443. . PMA_Util::backquote($selected[$i])
  444. . (($i == $selected_cnt-1) ? ');' : '');
  445. break;
  446. case 'fulltext_fld':
  447. $sql_query .= (empty($sql_query) ? 'ALTER TABLE ' . PMA_Util::backquote($table) . ' ADD FULLTEXT( ' : ', ')
  448. . PMA_Util::backquote($selected[$i])
  449. . (($i == $selected_cnt-1) ? ');' : '');
  450. break;
  451. case 'add_prefix_tbl':
  452. $newtablename = $_POST['add_prefix'] . $selected[$i];
  453. $a_query = 'ALTER TABLE ' . PMA_Util::backquote($selected[$i]) . ' RENAME ' . PMA_Util::backquote($newtablename); // ADD PREFIX TO TABLE NAME
  454. $run_parts = true;
  455. break;
  456. case 'replace_prefix_tbl':
  457. $current = $selected[$i];
  458. if (substr($current, 0, strlen($from_prefix)) == $from_prefix) {
  459. $newtablename = $to_prefix . substr($current, strlen($from_prefix));
  460. } else {
  461. $newtablename = $current;
  462. }
  463. $a_query = 'ALTER TABLE '
  464. . PMA_Util::backquote($selected[$i])
  465. . ' RENAME '
  466. . PMA_Util::backquote($newtablename) ; // CHANGE PREFIX PATTERN
  467. $run_parts = true;
  468. break;
  469. case 'copy_tbl_change_prefix':
  470. $current = $selected[$i];
  471. if (substr($current, 0, strlen($from_prefix)) == $from_prefix) {
  472. $newtablename = $to_prefix . substr($current, strlen($from_prefix));
  473. } else {
  474. $newtablename = $current;
  475. }
  476. $newtablename = $to_prefix . substr($current, strlen($from_prefix));
  477. $a_query = 'CREATE TABLE '
  478. . PMA_Util::backquote($newtablename)
  479. . ' SELECT * FROM '
  480. . PMA_Util::backquote($selected[$i]) ; // COPY TABLE AND CHANGE PREFIX PATTERN
  481. $run_parts = true;
  482. break;
  483. } // end switch
  484. // All "DROP TABLE", "DROP FIELD", "OPTIMIZE TABLE" and "REPAIR TABLE"
  485. // statements will be run at once below
  486. if ($run_parts) {
  487. $sql_query .= $a_query . ';' . "\n";
  488. if ($query_type != 'drop_db') {
  489. PMA_DBI_select_db($db);
  490. }
  491. $result = PMA_DBI_query($a_query);
  492. if ($query_type == 'drop_db') {
  493. PMA_clearTransformations($selected[$i]);
  494. } elseif ($query_type == 'drop_tbl') {
  495. PMA_clearTransformations($db, $selected[$i]);
  496. } else if ($query_type == 'drop_fld') {
  497. PMA_clearTransformations($db, $table, $selected[$i]);
  498. }
  499. } // end if
  500. } // end for
  501. if ($query_type == 'drop_tbl') {
  502. $default_fk_check_value = (PMA_DBI_fetch_value('SHOW VARIABLES LIKE \'foreign_key_checks\';', 0, 1) == 'ON') ? 1 : 0;
  503. if (!empty($sql_query)) {
  504. $sql_query .= ';';
  505. } elseif (!empty($sql_query_views)) {
  506. $sql_query = $sql_query_views . ';';
  507. unset($sql_query_views);
  508. }
  509. }
  510. if ($use_sql) {
  511. include './sql.php';
  512. } elseif (!$run_parts) {
  513. PMA_DBI_select_db($db);
  514. // for disabling foreign key checks while dropping tables
  515. if (! isset($_REQUEST['fk_check']) && $query_type == 'drop_tbl') {
  516. PMA_DBI_query('SET FOREIGN_KEY_CHECKS = 0;');
  517. }
  518. $result = PMA_DBI_try_query($sql_query);
  519. if (! isset($_REQUEST['fk_check'])
  520. && $query_type == 'drop_tbl'
  521. && $default_fk_check_value
  522. ) {
  523. PMA_DBI_query('SET FOREIGN_KEY_CHECKS = 1;');
  524. }
  525. if ($result && !empty($sql_query_views)) {
  526. $sql_query .= ' ' . $sql_query_views . ';';
  527. $result = PMA_DBI_try_query($sql_query_views);
  528. unset($sql_query_views);
  529. }
  530. if (! $result) {
  531. $message = PMA_Message::error(PMA_DBI_getError());
  532. }
  533. }
  534. if ($rebuild_database_list) {
  535. // avoid a problem with the database list navigator
  536. // when dropping a db from server_databases
  537. $GLOBALS['pma']->databases->build();
  538. }
  539. } else {
  540. $message = PMA_Message::success(__('No change'));
  541. }
  542. ?>