Php mysqli select中使用的多个表单复选框结果
我想将复选框与SQL select语句集成,但我不确定如何将数组转换为可用的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" /> <
<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");
}
...
?>
...