使用复选框值的SQL查询

时间:2014-09-14 10:47:44

标签: php mysql sql

我有一个html表单,其中有两个输入字段 比如Caste(选项是SC,ST和OBC)和Direction(选项是北,南,东和西)。用户将使用复选框选择选项。

<input name="ct" type="checkbox"  value="SC">SC
<input name="ct" type="checkbox"  value="ST">ST
<input name="ct" type="checkbox"  value="OBC">OBC

<input name="dr" type="checkbox"  value="N">North
<input name="dr" type="checkbox"  value="S">south
<input name="dr" type="checkbox"  value="E">East
<input name="dr" type="checkbox"  value="W">West

我还有一个数据库(名称:PEOPLE),列名为Caste,Direction等。

现在我想根据用户的选择运行一个sql查询。例如

mysql_query("select * from PEOPLE where Caste='option/options selected by user' and Direction= 'option/options selected by user' ")

如果用户从每个字段中选择一个选项,那么对我来说不是问题,

mysql_query("select * from PEOPLE where Caste='$_POST[ct]' and Direction= '$_POST[dr]' ")

但如果他们使用多个选项,那我该怎么办呢。

2 个答案:

答案 0 :(得分:2)

name属性赋予此类

复选框
<input type="checkbox" name="caste[]" value="SC" />
<input type="checkbox" name="caste[]" value="ST" />
<input type="checkbox" name="caste[]" value="OBC" />

在php端,你可以使用函数implode将caste形成一个字符串,如下所示(考虑到你正在进行POST)

$caste_id = implode(",",$_POST["caste"]);

从数据库读取的位置,您可以将值从db转换为类似

的数组
$caste_array = explode(",",$row->caste_id);

我希望这会有所帮助

答案 1 :(得分:0)

您可以使用WHERE IN

$caste_string = implode('","', $_GET['ct']);
$caste_string = '"'.$caste.'"';

$dir_string = implode('","', $_GET['dr']);
$dir_string = '"'.$caste.'"';


mysql_query("select * from PEOPLE WHERE Caste IN ($caste_string) AND Direction IN ($dir_string)")