Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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 Mysql Fiterby多个复选框的正确方式_Php_Mysql_Checkbox_Filter - Fatal编程技术网

Php Mysql Fiterby多个复选框的正确方式

Php Mysql Fiterby多个复选框的正确方式,php,mysql,checkbox,filter,Php,Mysql,Checkbox,Filter,我想从MyTable中筛选 我得到结果的方式只有对应于选中复选框的行 (1) <input type="cBox" name="Filter[Table_Column_Name_X]" value="y" /> (2) <input type="cBox" name="Filter[Table_Column_Name_Y]" value="y" /> (

我想从MyTable中筛选

我得到结果的方式只有对应于选中复选框的行

(1) <input type="cBox" name="Filter[Table_Column_Name_X]" value="y" />
(2) <input type="cBox" name="Filter[Table_Column_Name_Y]" value="y" />
(3) <input type="cBox" name="Filter[Table_Column_Name_Z]" value="y" />

Myabe我应该使用变量或foreach语句。感谢您的帮助。

您的HTML代码不正确:

<input type="checkbox" name="Filter[]" value="Table_Column_Name_X" />
<input type="checkbox" name="Filter[]" value="Table_Column_Name_Y" />
<input type="checkbox" name="Filter[]" value="Table_Column_Name_Z" />
这个""",?????指示列必须具有特定的值,查询才能处理,否则它将只返回所有内容,而不需要使用筛选器


在HTML中使用表/字段名是不明智的,因为您将数据库的结构暴露给可能的黑客。改用数字。

我将在明天测试您的代码,并给您留下反馈。感谢您对安全性的建议,您真好。
$where=”“
if(isset($\u POST['Filter'])和&!empty($\u POST['Filter']){
foreach($\u POST['Filter']as$Filter]){switch($Filter){case'lifter':if($where!=''$where.=”和“$where.='y';break;`现在我错过了最重要的部分“做你的查询”。我应该在代码中添加什么作为查询?您的修改将不起作用。您的sql语句最终将看起来像“SELECT*FROM MyTable WHERE y,y”。从我的代码中,将Table_Column_Name_X=???替换为lifter='y',并对其他两个条目进行必要的调整。“do the query”是实际调用数据库的语句获取数据。
<input type="checkbox" name="Filter[]" value="Table_Column_Name_X" />
<input type="checkbox" name="Filter[]" value="Table_Column_Name_Y" />
<input type="checkbox" name="Filter[]" value="Table_Column_Name_Z" />
$where = "";
if(isset($_POST['Filter'] ) {
  foreach( $_POST['Filter'] as $filter ) {
    switch( $filter ) {
      case 'Table_Column_Name_X' : if( $where != '' ) $where .= " AND ";
                                   $where .= Table_Column_Name_X = ??????????;
                                   break;
      //--- repeat above for other 2 options
  }
  $sql = "Select * From MyTable";
  if( $where != "" ) $sql .= " WHERE " . $where;
  //--- do the query