Php 如何将复选框中的值添加到“选择”查询?
我有一些这样的复选框Php 如何将复选框中的值添加到“选择”查询?,php,sql,post,checkbox,Php,Sql,Post,Checkbox,我有一些这样的复选框 <form action="tt.php" method="post"> <input type="checkbox" name="lvl[]" value="0">0  <input type="checkbox" name="lvl[]" value="1">1  <input type="checkbox" name="lvl[]" value="2">2  <inp
<form action="tt.php" method="post">
<input type="checkbox" name="lvl[]" value="0">0 
<input type="checkbox" name="lvl[]" value="1">1 
<input type="checkbox" name="lvl[]" value="2">2 
<input type="checkbox" name="lvl[]" value="3">3 
<input type="checkbox" name="lvl[]" value="4">4 
<input type="submit" value="Ok">
如何将选中值添加到SQL查询中,如下所示:
如果选中2和4,则从lvl=2或lvl=4的$table中选择名称、lvl、团队
如果选中2、4和0,则从$table中选择名称、lvl、团队,其中lvl=2或lvl=4或team='abc'如果选中0,则“select”必须包含team='abc'所在的字符串,如果未选中-不选中
如果未选择任何选项,则从$table中选择名称、lvl、团队
编辑
如果替换此项,会发生什么情况:
if ($key = array_search('0', $vals)) {
$where .= 'team = "abc" ';
unset($vals[$key]);
}
与:
将代码更改为:
$first = false;
if ($vals[0] === '0') {
$where .= 'team = "neutral"';
unset($vals[0]);
$first = true;
}
if (count($vals)) {
if ($first) $where .= ' OR ';
$where .= 'lvl IN (' . implode(',', $vals) . ')';
}
演示:如果我选中0和1,则可能不可用,$sql是SELECT name、lvl、team FROM table WHERE和lvl IN 0、1。是否使用我的所有代码?请尝试使用array_search'0',$vals而不是array_search'0,$vals。您显然没有在tt.php上实现我的代码,因为当我选择'0'选项时,WHERE语句的构造不正确。“0”值在数组中的键为“0”,值为“0”。您能告诉我现在必须更改什么吗?在提交选中“0”的表单后,当您var_dump$vals时会发生什么情况?
if ($vals[0] === '0') {
$where .= 'team = "abc" ';
unset($vals[0]);
}
$first = false;
if ($vals[0] === '0') {
$where .= 'team = "neutral"';
unset($vals[0]);
$first = true;
}
if (count($vals)) {
if ($first) $where .= ' OR ';
$where .= 'lvl IN (' . implode(',', $vals) . ')';
}