3 declare(strict_types
=1);
5 namespace PhpMyAdmin\Controllers\Table
;
7 use PhpMyAdmin\ConfigStorage\Relation
;
8 use PhpMyAdmin\ConfigStorage\RelationCleanup
;
9 use PhpMyAdmin\Controllers\AbstractController
;
10 use PhpMyAdmin\DatabaseInterface
;
11 use PhpMyAdmin\Operations
;
12 use PhpMyAdmin\ResponseRenderer
;
14 use PhpMyAdmin\Template
;
15 use PhpMyAdmin\Transformations
;
18 use PhpMyAdmin\Utils\ForeignKey
;
23 final class DeleteRowsController
extends AbstractController
25 /** @var DatabaseInterface */
28 public function __construct(
29 ResponseRenderer
$response,
31 DatabaseInterface
$dbi
33 parent
::__construct($response, $template);
37 public function __invoke(): void
39 $mult_btn = $_POST['mult_btn'] ??
'';
40 $original_sql_query = $_POST['original_sql_query'] ??
'';
41 $selected = $_POST['selected'] ??
[];
43 $relation = new Relation($this->dbi
);
47 new RelationCleanup($this->dbi
, $relation),
48 new Operations($this->dbi
, $relation),
49 new Transformations(),
53 if ($mult_btn === __('Yes')) {
54 $default_fk_check_value = ForeignKey
::handleDisableCheckInit();
55 $GLOBALS['sql_query'] = '';
57 foreach ($selected as $row) {
59 'DELETE FROM %s WHERE %s LIMIT 1;',
60 Util
::backquote($GLOBALS['table']),
63 $GLOBALS['sql_query'] .= $query . "\n";
64 $this->dbi
->selectDb($GLOBALS['db']);
65 $this->dbi
->query($query);
68 if (! empty($_REQUEST['pos'])) {
69 $_REQUEST['pos'] = $sql->calculatePosForLastPage($GLOBALS['db'], $GLOBALS['table'], $_REQUEST['pos']);
72 ForeignKey
::handleDisableCheckCleanup($default_fk_check_value);
74 $GLOBALS['disp_message'] = __('Your SQL query has been executed successfully.');
75 $GLOBALS['disp_query'] = $GLOBALS['sql_query'];
78 $_url_params = $GLOBALS['urlParams'];
79 $_url_params['goto'] = Url
::getFromRoute('/table/sql');
81 if (isset($original_sql_query)) {
82 $GLOBALS['sql_query'] = $original_sql_query;
85 $GLOBALS['active_page'] = Url
::getFromRoute('/sql');
87 $this->response
->addHTML($sql->executeQueryAndSendQueryResponse(
98 $GLOBALS['disp_query'] ??
null,
99 $GLOBALS['disp_message'] ??
null,
100 $GLOBALS['sql_query'],