Форма множественного раскрывающегося списка PHP Отправить в MySQL с помощью ИЛИ
-
05-07-2019 - |
Вопрос
Этот вопрос похож на форму множественного раскрывающегося списка PHP Отправить в MySQL , но с изюминкой.
Давайте предположим, что у нас есть мультиселектор HTML, который передается в бэкэнд PHP.
Как элегантно создать запрос mysql с условием ИЛИ для значений множественного выбора?
Например, у меня есть мульти-выбор со списком видов спорта. Как сделать:
SELECT * FROM sports WHERE sport.name=:sport1 OR sport.name=:sport2 OR sport.name=:sport3...
Решение
Это не проверено, просто идея ...
Это не проверено, просто идея ...
<*>POST['sports'] = array('basketball', 'baseball', 'football', 'soccer');
$sql = sprintf("SELECT * FROM sports WHERE sport.name IN (%s)", implode( ',', array_fill(1,count( Это не проверено, просто идея ...
<*>POST['sports']), '?') ) );
// SELECT * FROM sports WHERE sport.name IN (?,?,?,?)
$st = $dbh->prepare($sql);
// bind all values
foreach( Это не проверено, просто идея ...
<*>POST['sports'] as $i => $sport) {
$st->bindValue( ++$i, $sport );
}
$st->execute();
Другие советы
SELECT * FROM sports WHERE sports.name IN ('football','hockey','soccer','trolling');
SELECT * FROM sports WHERE sport.name IN (basketball,baseball,football,soccer)
Должен привести к
<*>POST['sports'] = array('basketball', 'baseball', 'football', 'soccer');
$sql = sprintf("SELECT * FROM sports WHERE sport.name IN (%s)", implode(',', <*>
Должен привести к
<*>POST['sports']));
Должен привести к
<*>Не связан с StackOverflow