gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:26:07 26 4
gpt4 key购买 nike

我想从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'

......等等,选中每个复选框!

类似这样的事情

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

也许我应该使用变量或 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" />

您的 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 中使用表/字段名是不明智的,因为您会将数据库的结构暴露给黑客。请改用数字。

关于php - Mysql Fiterby 多个复选框的正确方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17975536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com