Использование переменной в качестве имени таблицы в запросе SQL pdo

0

Я нашел способ использовать переменную как имя таблицы в запросе pdo.

Тем не менее, я хотел бы знать, безопасна ли часть кода ниже.

function buildQuery($CheckInput)
{
    switch($CheckInput) {
        case $CheckInput == 'user':
            $TableName = 'user';
            break;

        case $CheckInput == 'guest':
            $TableName = 'guest';
            break;
    }

    $sql = "SELECT * FROM $TableName";
    return $sql;
}

Функция используется следующим образом:

if (isset($_POST['DropDownChoice']) AND ($_POST['DropDownChoice'] == 'user' OR $_POST['DropDownChoice'] == 'guest'))  {
    $sql = buildQuery(htmlspecialchars($_POST['DropDownChoice']));
}

Если $CheckInput никогда не будет истинным в коммутаторе, тогда $TableName будет неопределенным.
Что произойдет с SQL-запросом?

Все примеры, которые я нашел, не используют случай по умолчанию, есть ли причина?

  • 0
    Инициируйте переменную $TableName над вашим переключателем с таблицей по умолчанию, если вы собираетесь использовать такой переключатель
  • 0
    Нет по default: на коммутаторе
Теги:
pdo

1 ответ

0
Лучший ответ

Установите значение по умолчанию, чтобы получить имя таблицы

function buildQuery($CheckInput)
{

    switch($CheckInput)                 
    { 
        case 'user':
            $TableName = 'user';
            break;

        case 'guest':
            $TableName = 'guest';
            break;

        default:
           $TableName = 'guest';

    }

    $sql = "SELECT * FROM $TableName";
    return $sql;

}
  • 0
    Использование такого switch вполне допустимо. Может быть полезно, если вам нужно проверить, находится ли переменная между диапазонами. пример
  • 0
    @DarkBee: по default: $TableName = 'guest'; будет работать тогда
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню