PHP:选择数组中的每个值

PHP:选择数组中的每个值,php,arrays,checkbox,pdo,Php,Arrays,Checkbox,Pdo,因此,我有我的表单,并希望检索所有已签出的行。 但是我不能让我的朋友喜欢我想做的工作。。如果选中一个复选框,则它仅起作用。 我想显示具有每个值的所有行。 因此,如果你勾选“摇滚乐”和“爵士乐”,它将显示所有带有“摇滚乐”或“爵士乐”的行。“摇滚,电子”这一行也会出现 我应该换一种方法吗 <?php if(isset($_POST['submit'])){ if (isset($_POST['genre'])) { $genre_str = implode(",", $_POS

因此,我有我的表单,并希望检索所有已签出的行。 但是我不能让我的朋友喜欢我想做的工作。。如果选中一个复选框,则它仅起作用。 我想显示具有每个值的所有行。 因此,如果你勾选“摇滚乐”和“爵士乐”,它将显示所有带有“摇滚乐”或“爵士乐”的行。“摇滚,电子”这一行也会出现

我应该换一种方法吗

<?php
if(isset($_POST['submit'])){
  if (isset($_POST['genre'])) {

    $genre_str = implode(",", $_POST['genre']);

    $sql = $dbcon->prepare('SELECT * FROM user_profile WHERE user_genre LIKE :user_genre');
    $sql->bindvalue(':user_genre', "%".$genre_str."%");
    $sql->execute();

    foreach ($sql as $row){
    $row_id = htmlspecialchars($row['id']);
    $row_genre = $row_post['user_genre'];
    echo "id: " . $row_id . " = " . $row_genre;
    echo "<br/>";
    }
  }

}
?>

<form action="" method="post">
  <h4 class="text-center">Genre</h4>
  <div class="checkbox">
    <label class="checkbox-inline"><input type="checkbox" name="genre[]" value="Rock">Rock</label>
    <label class="checkbox-inline"><input type="checkbox" name="genre[]" value="Funk">Funk</label>
  </div>

  <div class="checkbox">
    <label class="checkbox-inline"><input type="checkbox" name="genre[]" value="Jazz">Jazz</label>
    <label class="checkbox-inline"><input type="checkbox" name="genre[]" value="Hip-Hop">Hip-Hop</label>
  </div>

  <div class="checkbox">
    <label class="checkbox-inline"><input type="checkbox" name="genre[]" value="Acoustic">Acoustic</label>
    <label class="checkbox-inline"><input type="checkbox" name="genre[]" value="Electronic">Electronic</label>
  </div>

  <div class="col-md-12">
    <input type="submit" name="submit" class="btn btn-block btn-success" value="Search">
  </div>
</form> 

体裁
摇滚乐
芬克
爵士乐
嘻哈
声学的
电子的

您可以使用
在集合中查找()

示例:

SELECT *
FROM `test`
WHERE find_in_set( 'jazz', user_genre)
AND find_in_set( 'sufi', user_genre )

提示:根据所选复选框的数量,可以使用循环获取多个find_in_set()

用户类型中存储了哪些类型的值?单值列表,还是逗号分隔列表?它是逗号分隔的,好像不适用于此,因为它将查找通配符之间的整个值,除非在user_类型中找到确切的值,它不匹配。您需要循环浏览通过表单接收到的每个流派,并执行以下操作:
user\u genre like%:each\u user\u genre%
,将所有单个流派的结果推送到结果数组中,然后循环浏览结果数组并打印。%where子句中的start和end运算符表示start和end上的任何字符串,但与从FORM中获得的字符串匹配。我建议为user_GREEP创建另一个表,将多个GREEP行映射到每个user_配置文件。这将使类似这样的查询更加容易。
SELECT *
FROM `test`
WHERE find_in_set( 'jazz', user_genre)
AND find_in_set( 'sufi', user_genre )