Php mysqli select中使用的多个表单复选框结果

Php mysqli select中使用的多个表单复选框结果,php,checkbox,mysqli,Php,Checkbox,Mysqli,我想将复选框与SQL select语句集成,但我不确定如何将数组转换为可用的select语句 <form method="post"> <input name="searchterm" type="search" placeholder="Enter Search Terms Here" /> <input name="searchbtn" type="submit" value="Karaoke Search" /> <

我想将复选框与SQL select语句集成,但我不确定如何将数组转换为可用的select语句

    <form method="post">
    <input name="searchterm" type="search" placeholder="Enter Search Terms Here" />
    <input name="searchbtn" type="submit" value="Karaoke Search" />
    <input name="checkbx[]" type="checkbox" checked value="Chartbuster" />
      <label>Chartbuster</label>
    <input name="checkbx[]" type="checkbox" checked value="Sound Choice" />
      <label>Sound Choice</label>
    <input name="checkbx[]" type="checkbox" checked value="DKKaraoke" />
      <label>DKKaraoke</label>
    <input name="checkbx[]" type="checkbox" checked value="Sunfly" />
      <label>Sunfly</label>
    <input name="checkbx[]" type="checkbox" checked value="Karaoke Hits" />
      <label>Karaoke Hits</label>
    <?php
      if(isset($_POST['searchterm']) and ($_POST['searchterm']!="")) {
        $searchterm=$_POST['searchterm'];
        $checkbx=$_POST['checkbx'];
        $searchresults=$db->query("SELECT *
                                   FROM 1KaraokeDJ
                                   WHERE Artist LIKE '%$searchterm%'
                                   GROUP BY Artist,
                                            Title,
                                            Brand  
                                   ORDER BY Artist,
                                            Title,
                                            Disc LIMIT 100");
      }
    ...
    ?>
     ...
</form>

查特巴斯特
合理选择
卡拉OK
阳光
卡拉OK热门歌曲
您可以使用此方法(尽管如果您担心应用程序的安全性,这不是最好的方法)

然后这个变量应该适合您的查询

另外,请删除圆括号,它们不是必需的:

$searchterm=($_POST['searchterm']);
$checkbx=($_POST['checkbx']);
成为

$searchterm=$_POST['searchterm'];
$checkbx=$_POST['checkbx'];

在经历了很多头痛之后,我偶然发现了一些类似问题的答案中没有添加的东西

Select IN('a'、'b'、'c'…)需要在每个文本选项周围加上“'”。在所有示例中,它都假定为数字

$checkbx=联接(“,”,$checkbx);起初不起作用,因为数组中的每个文本项在加入之前必须有“%”

因此,我的解决方案(可能更好的解决方案)是在我的每个复选框值中添加“'”:

<input name="checkbx[]" type="checkbox" value="'Chartbuster'" />
  <label>Chartbuster</label>
<input name="checkbx[]" type="checkbox" value="'Sound Choice'" />
  <label>Sound Choice</label>
<input name="checkbx[]" type="checkbox" value="'DKKaraoke'" />
  <label>DKKaraoke</label>
<input name="checkbx[]" type="checkbox" value="'Sunfly'" />
  <label>Sunfly</label>
<input name="checkbx[]" type="checkbox" value="'Karaoke Hits'" />
  <label>Karaoke Hits</label>
<?php
  if(isset($_POST['searchterm']) and ($_POST['searchterm']!="") and isset($_POST['checkbx'])) {
    $searchterm=$_POST['searchterm'];
    $checkbx=join(',',$_POST['checkbx']);
    $searchresults=$db->query("SELECT *
                               FROM 1KaraokeDJ
                               WHERE Artist LIKE '%$searchterm%'
                               AND Brand IN ($checkbx)
                               GROUP BY Artist,
                                        Title,
                                        Brand  
                               ORDER BY Artist,
                                        Title,
                                        Disc
                               LIMIT 100");
      }
    ...
    ?>
     ...

查特巴斯特
合理选择
卡拉OK
阳光
卡拉OK热门歌曲

所以基本上你把数组转换成一个带“,”的字符串。我知道,现在sql select应该有Brand=$checkbx?但是不,这是行不通的…从数组到字符串的转换非常好,但是在$checkbx中添加和Brand来选择不会产生任何结果。只需在()语句中使用mysql,比如Brand IN(join(',',$checkbx))link()从1KaraokeDJ中选择*,其中艺术家“%$searchterm%”和品牌(加入(“,”,$checkbx))按艺术家、标题分组,按艺术家、标题、光盘限制100列出的品牌订单-不产生任何结果$checkbx=join(“,”,$checkbx);$checkbx中的plus和Brand也不会产生结果-s
<input name="checkbx[]" type="checkbox" value="'Chartbuster'" />
  <label>Chartbuster</label>
<input name="checkbx[]" type="checkbox" value="'Sound Choice'" />
  <label>Sound Choice</label>
<input name="checkbx[]" type="checkbox" value="'DKKaraoke'" />
  <label>DKKaraoke</label>
<input name="checkbx[]" type="checkbox" value="'Sunfly'" />
  <label>Sunfly</label>
<input name="checkbx[]" type="checkbox" value="'Karaoke Hits'" />
  <label>Karaoke Hits</label>
<?php
  if(isset($_POST['searchterm']) and ($_POST['searchterm']!="") and isset($_POST['checkbx'])) {
    $searchterm=$_POST['searchterm'];
    $checkbx=join(',',$_POST['checkbx']);
    $searchresults=$db->query("SELECT *
                               FROM 1KaraokeDJ
                               WHERE Artist LIKE '%$searchterm%'
                               AND Brand IN ($checkbx)
                               GROUP BY Artist,
                                        Title,
                                        Brand  
                               ORDER BY Artist,
                                        Title,
                                        Disc
                               LIMIT 100");
      }
    ...
    ?>
     ...