从表中选择*列=???在PHP中具有未知数量的值?

从表中选择*列=???在PHP中具有未知数量的值?,php,sql,select,Php,Sql,Select,我正试图从我的数据库中显示一些东西。有一个叫做流派的专栏,它可以是五个不同值中的一个。现在,我只想通过选中复选框来显示用户选择的类型的数据。用户可以选择多个流派。我知道如何使用WHERE来显示一个、两个或三个流派。。。而且。。。但我不知道用户会选择多少类型!这是我在选中复选框“actie”时用于显示数据的内容: if (isset($_GET["actie"])) { $stmt = $db->prepare("SELECT ProductID,Afbeelding,Pro

我正试图从我的数据库中显示一些东西。有一个叫做流派的专栏,它可以是五个不同值中的一个。现在,我只想通过选中复选框来显示用户选择的类型的数据。用户可以选择多个流派。我知道如何使用WHERE来显示一个、两个或三个流派。。。而且。。。但我不知道用户会选择多少类型!这是我在选中复选框“actie”时用于显示数据的内容:

if (isset($_GET["actie"]))
    {
    $stmt = $db->prepare("SELECT ProductID,Afbeelding,Product,Prijs,Beschrijving FROM Producten WHERE Genre='Actie' order by Product ASC");
    }
如何对多个复选框执行此操作,以便在选中例如“活动”和“运动”时显示所有数据?我很困惑,因为我不知道用户将选择多少复选框,无、一、二、三、四或五。
提前感谢您的帮助

您需要确保所有复选框都具有相同的name属性,后跟[] i、 e

然后使用MySQL WHERE IN子句。您必须使用
内爆()
将数组转换为“gen1,gen2,…”字符串

其中,语法正确:
从my_表中选择*,其中的类型为('gen1','gen2','gen3',…)


希望这有帮助

对任何逻辑使用(和占位符)。您需要动态构建IN结构,例如“X IN(?,,?)”,以便从用户获得正确数量的值。类似的方法可以用于任何需要的任意结构(可能是ANDs)。到目前为止帮助很大!至少现在我知道基本的想法是什么了。但有一个问题,当我选中一个或多个复选框时,它根本没有显示任何内容。我认为这是因为内爆(“,”,$genres)创建了字符串:gen1,gen2,gen3,。。。而不是字符串:“gen1”、“gen2”、“gen3”,。。。通过这种方式,它显示了(第1代、第2代、第3代)中的哪种类型将其视为一个值,其中恰好有逗号。还是我说了一些非常愚蠢的话?@DeEerlijkeDame您需要为每个复选框设置一个值。我将编辑我的答案以包含它。@DeEerlijkeDame它现在应该可以工作了。如果遇到问题,请尝试将值设置为仅数值(1,2,3而不是gen1、gen2、gen3),并将其与流派id而不是流派名称进行匹配。每个复选框都有一个值,即相关列中的对应值。那就是第1代、第2代。。。在本例中,尝试在$\u POST['mycheckbox']上使用var\u dump。顺便说一句,在您输入的代码中,您没有执行查询,因此我假设您没有忘记。。。
<input type="checkbox" name="mycheckbox[]" value="gen1">
<input type="checkbox" name="mycheckbox[]" value="gen2">
<input type="checkbox" name="mycheckbox[]" value="gen3">
$genres = $_POST['mycheckbox'];//creates an array of selected checkboxes values gen1,gen2,gen3
if (isset($_GET["actie"])) 
    {

    $genres_str = "'" .implode( "','" ,$genres ) ."'";//converts the array into 'gen1,gen2,gen3,..'

    $stmt = $db->prepare("SELECT ProductID,Afbeelding,Product,Prijs,Beschrijving FROM Producten WHERE Genre IN (". $genres_str .") order by Product ASC");

   //don't forget to execute the query

    }