mysqli选择中使用的多表单复选框结果

时间:2015-11-28 14:52:07

标签: php checkbox mysqli

我想将复选框与我的SQL 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>

基本上,将搜索范围限制在所选复选框之一

2 个答案:

答案 0 :(得分:1)

您可以使用此功能(尽管如果您担心应用中的安全性,这不是最佳方法)

$checkbx = join(',',$checkbx);

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

另请删除圆括号,不需要它们:

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

成为

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

答案 1 :(得分:0)

经过一番头痛之后,我偶然发现了一些在类似问题中没有添加到任何答案的内容......

选择IN(&#39; a&#39;,&#39; b&#39;,&#39; c&#39; ...)需要&#34;&#39;&#34;&#34;围绕每个文本选项。在所有的例子中,它假设数字!

$ checkbx = join(&#39;,&#39;,$ checkbx);起初没有工作,因为数组中的每个文本项都必须有&#34;&#39;&#34;在加入之前。

因此,对我来说(可能是更好的解决方案)的解决方案是添加&#34;&#39;&#34;&#34;到我的每个复选框值:

{{1}}