You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.3 KiB
85 lines
2.3 KiB
2 years ago
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace PhpMyAdmin\Controllers\Table\Structure;
|
||
|
|
||
|
use PhpMyAdmin\Controllers\Table\AbstractController;
|
||
|
use PhpMyAdmin\ParseAnalyze;
|
||
|
use PhpMyAdmin\ResponseRenderer;
|
||
|
use PhpMyAdmin\Sql;
|
||
|
use PhpMyAdmin\Template;
|
||
|
use PhpMyAdmin\Url;
|
||
|
use PhpMyAdmin\Util;
|
||
|
|
||
|
use function __;
|
||
|
use function implode;
|
||
|
use function sprintf;
|
||
|
|
||
|
final class BrowseController extends AbstractController
|
||
|
{
|
||
|
/** @var Sql */
|
||
|
private $sql;
|
||
|
|
||
|
public function __construct(ResponseRenderer $response, Template $template, string $db, string $table, Sql $sql)
|
||
|
{
|
||
|
parent::__construct($response, $template, $db, $table);
|
||
|
$this->sql = $sql;
|
||
|
}
|
||
|
|
||
|
public function __invoke(): void
|
||
|
{
|
||
|
if (empty($_POST['selected_fld'])) {
|
||
|
$this->response->setRequestStatus(false);
|
||
|
$this->response->addJSON('message', __('No column selected.'));
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$this->displayTableBrowseForSelectedColumns($GLOBALS['goto']);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Function to display table browse for selected columns
|
||
|
*
|
||
|
* @param string $goto goto page url
|
||
|
*/
|
||
|
private function displayTableBrowseForSelectedColumns($goto): void
|
||
|
{
|
||
|
$GLOBALS['active_page'] = Url::getFromRoute('/sql');
|
||
|
$fields = [];
|
||
|
foreach ($_POST['selected_fld'] as $sval) {
|
||
|
$fields[] = Util::backquote($sval);
|
||
|
}
|
||
|
|
||
|
$sql_query = sprintf(
|
||
|
'SELECT %s FROM %s.%s',
|
||
|
implode(', ', $fields),
|
||
|
Util::backquote($this->db),
|
||
|
Util::backquote($this->table)
|
||
|
);
|
||
|
|
||
|
// Parse and analyze the query
|
||
|
[$analyzed_sql_results, $this->db] = ParseAnalyze::sqlQuery($sql_query, $this->db);
|
||
|
|
||
|
$this->response->addHTML(
|
||
|
$this->sql->executeQueryAndGetQueryResponse(
|
||
|
$analyzed_sql_results ?? '',
|
||
|
false, // is_gotofile
|
||
|
$this->db, // db
|
||
|
$this->table, // table
|
||
|
null, // find_real_end
|
||
|
null, // sql_query_for_bookmark
|
||
|
null, // extra_data
|
||
|
null, // message_to_show
|
||
|
null, // sql_data
|
||
|
$goto, // goto
|
||
|
null, // disp_query
|
||
|
null, // disp_message
|
||
|
$sql_query, // sql_query
|
||
|
null // complete_query
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
}
|