Простая выборка MySQL

189
18 октября 2017, 05:22
  1. Есть таблица, в ней столбец со значениями валют "USD", "RUR", "EUR" и другими валютами.
  2. В php поступает POST с выборкой валют, где каждой валюте которую нужно выбрать присваивается либо true либо false; Например:

<? 
$usd = $_POST['usd']; (true) 
$rur = $_POST['rur']; (false) 
$rur = $_POST['eur']; (true) 
?>

  1. Как сделать запрос в базу что бы выбрать usd и eur?

То что первое приходит на ум. Через php и условия сделать разные запросы. Как можно по другому?

Answer 1

Обширный набор функций работы с массивами делает решение этой задачи в части обработки входных параметров весьма кратким.
Со стороны БД у вас есть инструкция 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));
READ ALSO
Запустить java файл с кастомной версией java

Запустить java файл с кастомной версией java

Добрый деньУ меня имеется некий сервер на Debian на котором я запускаю некие Java файлы

217
java.net.BindException: адрес уже используется: JVM_Bind

java.net.BindException: адрес уже используется: JVM_Bind

Запускаю данный код в еклипсе, выводит ошибку

279
Пропали все File Templat&#39;ы Intellij IDEA

Пропали все File Templat'ы Intellij IDEA

День добрыйВ IDEA при попытке создать новый класс появляется ошибка:

171
Скрыть компонент из toolbar

Скрыть компонент из toolbar

Как программно можно скрыть один из MenuItem на toolbar?

237