Я нашел способ использовать переменную как имя таблицы в запросе 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-запросом?
Все примеры, которые я нашел, не используют случай по умолчанию, есть ли причина?
Установите значение по умолчанию, чтобы получить имя таблицы
function buildQuery($CheckInput)
{
switch($CheckInput)
{
case 'user':
$TableName = 'user';
break;
case 'guest':
$TableName = 'guest';
break;
default:
$TableName = 'guest';
}
$sql = "SELECT * FROM $TableName";
return $sql;
}
switch
вполне допустимо. Может быть полезно, если вам нужно проверить, находится ли переменная между диапазонами. пример
default: $TableName = 'guest';
будет работать тогда
$TableName
над вашим переключателем с таблицей по умолчанию, если вы собираетесь использовать такой переключательdefault:
на коммутаторе