Присвоение имен полям SQL - PullRequest
       35

Присвоение имен полям SQL

0 голосов
/ 24 сентября 2019

Я задаю быстрый вопрос, я пытаюсь решить эту проблему некоторое время (для собственной выгоды).

Как мне задать имя поля после выбора всехстолбцы в таблице.

Ниже приведен фрагмент кода

SELECT * 
FROM `random$table` 
LEFT JOIN users AS u AND u.username AS title ON u.rank > 4 
WHERE u.username = 'exploit' 
GROUP BY `id` LIMIT 1

Как вы можете видеть из приведенного выше фрагмента, я пытаюсь присвоить заданное имя полю после того, как он присоединился к нему,

AND u.username AS title

Не удалось найти другой вопрос, связанный с этой проблемой, пометьте как дубликат, если он есть.

Примечание: запрос уязвим по причине

С уважением

1 Ответ

0 голосов
/ 24 сентября 2019

Вы не можете сделать это после запроса.Вместо этого установите псевдонимы внутри вашего выражения SELECT.Возможно, вам нужно какое-то отображение, поэтому в зависимости от вашего значения $ table у вас будет и $ array of field => сопоставление псевдонимов, которое вы поместите с помощью join (',', $ array) в выражение SELECT.

Примерно так:

    function mapFields($table) {
        $mapping = [];


        switch($table) {
            case 'abc': {
                $mapping = [
                    $table.'.id' => 'id',
                    $table.'.rank' => 'rank',
                    $table.'.title' => 'title'
                ];
            }
            case 'xyz': {
                $mapping = [
                    $table.'.id' => 'userId',
                    $table.'.username' => 'username',
                    $table.'.email' => 'userEmail'
                ];
            }
        }

        return array_map(
            function($k, $v){return "$k as $v";}, 
            array_keys($mapping), 
            $mapping
        );
    }

    $mapping = mapFields('random'.$table);

    // do propper checks if the mapping array is empty or so


    $select = join(',', $mapping);



    SELECT $select
    FROM `random$table`
...