Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将复选框中的值添加到“选择”查询?_Php_Sql_Post_Checkbox - Fatal编程技术网

Php 如何将复选框中的值添加到“选择”查询?

Php 如何将复选框中的值添加到“选择”查询?,php,sql,post,checkbox,Php,Sql,Post,Checkbox,我有一些这样的复选框 <form action="tt.php" method="post"> <input type="checkbox" name="lvl[]" value="0">0&nbsp <input type="checkbox" name="lvl[]" value="1">1&nbsp <input type="checkbox" name="lvl[]" value="2">2&nbsp <inp

我有一些这样的复选框

<form action="tt.php" method="post">
<input type="checkbox" name="lvl[]" value="0">0&nbsp
<input type="checkbox" name="lvl[]" value="1">1&nbsp
<input type="checkbox" name="lvl[]" value="2">2&nbsp
<input type="checkbox" name="lvl[]" value="3">3&nbsp
<input type="checkbox" name="lvl[]" value="4">4&nbsp
<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) . ')';
}