所以我有我的表单,想要检查已经检查过的所有行。 但我不能让我的LIKE工作,因为我想..它只有一个复选框的工作被检查。 我想显示具有每个值的所有行。 因此,如果你勾选“摇滚”和“爵士乐”,它将显示所有行“白色摇滚”或“爵士乐”。而“Rock,Electronic”这一行也将出现。
我应该对此有不同的看法吗?
<?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>
答案 0 :(得分:0)
您可以使用find_in_set()
。
SELECT * FROM user_profile WHERE find_in_set('jazz', user_genre);
示例:强>
SELECT *
FROM `test`
WHERE find_in_set( 'jazz', user_genre)
AND find_in_set( 'sufi', user_genre )
提示:您可以使用循环获取多个find_in_set(),具体取决于所选复选框的数量。