首页 > 解决方案 > PhpMyAdmin:执行QUERY“SELECT”的文件和行的确切位置?

问题描述

知道某些人 PMA“默认”执行 QUERY 以从 ANY 表中选择 X 行的 FILE 和 LINE 吗?

phpMyAdmin 5.1.1

当我尝试找到这个 FILE+LINE 时,我在文件/tmp夹中找到了两个文件:

phpMyAdmin-5.1.1-all-languages\tmp\twig\67\6713c2eddaa7a146c29b5dfe966a6717694167b6b99f58e35222aab2bc4f92b3.php
phpMyAdmin-5.1.1-all-languages\tmp\twig\c9\c934314868d98512d8034e9147a54a1771010d4253cb827d5115e58d54db6f5c.php

但这些文件只是 TEMPLATES html

我搜索这个LINE的主要原因是学习这个专业工具使用的算法

关于 LINE 和文件的一些想法,其中:

$mysqli -> QUERY($sql_query);

被执行了?,我只找到函数

getDefaultSqlQueryForBrowse($db, $table)

但是这个 QUERY 的 RETURN 部分到 var 中$sql_query并且不执行它。

标签: php

解决方案


将版本phpMyAdmin-5.1.1-all-languages(2021-06-04 发布)放入文件中

phpMyAdmin-5.1.1-all-languages\libraries\classes\Sql.php

绕线140你会发现功能

private function getSqlWithLimitClause(array &$analyzed_sql_results)

然后在之前添加此行return

file_put_contents($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.date('Y-m-d_').'_QUERY_.php', __FILE__."\n".Query::replaceClause(
            $analyzed_sql_results['statement'],
            $analyzed_sql_results['parser']->list,
            'LIMIT ' . $_SESSION['tmpval']['pos'] . ', '
            . $_SESSION['tmpval']['max_rows']
        ));

您将获得 QUERY 默认值


推荐阅读