0

我想从 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" />

前任。:

如果选中“仅”复选框 (1)

我只检索行 WHERE Table_Column_Name_X='y'

如果复选框 (1) 和复选框 (3) 被选中

我只检索行 WHERE Table_Column_Name_X='y' AND Table_Column_Name_Z='y'

.........等等 foreach 复选框被选中!

像这样的东西

if(isset($_POST['Filter'][]) && !empty($_POST['Filter'][]){
$query= "Select * From MyTable WHERE  Table_Columns_Names_Checked='y'";
}

Myabe 我应该使用变量或 foreach 语句。任何帮助表示赞赏。

4

1 回答 1

0

您的 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" />

您的 PHP 代码(以下代码未经测试):

$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

这 ?????指示该列必须具有特定值才能使查询工作,否则它将只返回所有内容并且不需要过滤器。

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

于 2013-07-31T16:32:14.757 回答