<?
$usd = $_POST['usd']; (true)
$rur = $_POST['rur']; (false)
$rur = $_POST['eur']; (true)
?>
То что первое приходит на ум. Через php и условия сделать разные запросы. Как можно по другому?
Обширный набор функций работы с массивами делает решение этой задачи в части обработки входных параметров весьма кратким.
Со стороны БД у вас есть инструкция IN
, поэтому конечная цель работы - написание запроса вида WHERE currency IN ('usd', 'eur')
.
Промежуточный слой - инстурментарий доступа к БД (PDO
, mysqli
) имеют функционал передачи параметров и использования плейсхолдеров.
Таким образом, вам необходимо сформировать запрос вида
SELECT * FROM table1 WHERE currency IN (?, ?)
и выполнить его передав параметры ['usd', 'eur']
.
Допустим, вот ваш приходящий $_POST
и возможные названия валют выглядят так:
$POST = [ 'eur' => true, 'usd' => true, 'rur' => false, 'gbp' => false ];
$accept = ['eur', 'usd', 'rur' ];
Тогда чтобы получить только ключи со значениями true
, можно использовать следующий подход:
$filter = array_filter(array_intersect($POST, array_flip($accept)));
Формируем строку плейсхолдеров, составляем запрос, и выполняем его
$phs = array_fill(1, count($filter), '?');
$sql = "SELECT * FROM table1 WHERE currency IN (".implode(',', $phs).")";
$conn->execute($sql, array_keys($filter));
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый деньУ меня имеется некий сервер на Debian на котором я запускаю некие Java файлы
Запускаю данный код в еклипсе, выводит ошибку
День добрыйВ IDEA при попытке создать новый класс появляется ошибка: