使用下拉框过滤MYSQL数据

时间:2012-10-12 15:05:14

标签: php mysql drop-down-menu filter

我已经用数据库中的表填充了一个html页面。我想在顶部添加可以过滤掉不必要数据的下拉框。我如何将这些信息发送到数据库进行查询,以便我可以过滤掉多个变量的数据?

例如,我有5个类别,A,B,C,D和E. 我已经使用PHP代码填充了包含A,B,C,D和E的可能值/条目的框。我还添加了一个“NULL条目”,以防用户不希望将此列包含在内过滤器。

就目前而言,我们可以拥有相应的列:

Apple, always, as, amazing, as, almonds, NULL.
Belly, boosts, bad, NULL.
Candy, can, create, NULL.
Dandy, does, do, don't, NULL.
Elements, exist, NULL.

当变量无限期时,我如何将信息发送到数据库?它们可能会也可能不会被设置。

我想我首先看看是否通过使用isset()来设置变量,但是我将如何从那里开始?这似乎是很多“如果”的陈述。我需要做的就是根据用户输入的变量值更改查询。但我没有看到一种简单的方法。

我只是在查询结尾处添加“WHERE A = this AND B = AND C = this thathat AND ..”但是如果这些条目中的一个或多个或全部为空怎么办?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以轻松构建WHERE查询,如下所示

$where = array();

if ($A != '')
{ 
    $where[] = 'A = "' . $A . '"';
}

if ($B != '')
{ 
    $where[] = 'B = "' . $B . '"';
}

if ($C != '')
{ 
    $where[] = 'C = "' . $C . '"';
}

if ($D != '')
{ 
    $where[] = 'D = "' . $D . '"';
}

if ($E != '')
{ 
    $where[] = 'E = "' . $E . '"';
}

// Now get the $where
$final_where = '';
if (count($where) > 0)
{
    $final_where = implode(' AND ', $where);
}

// $final_where will contain
// A = 'ab' AND B = 'cd' etc.

注意请确保清理您的输入。因此,例如,您需要为$ A添加一个检查,它包含您希望它包含的值。必须丢弃任何其他东西。您可以使用in_array,例如:

$a_array = array('first value', 'second value', 'third value');
if (in_array($A, $a_array))
{
    // Valid choice - we can use it
}
else 
{
    // Not valid set $A to null
    $A = '';
}