我已经用数据库中的表填充了一个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 ..”但是如果这些条目中的一个或多个或全部为空怎么办?
非常感谢您的帮助。
答案 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 = '';
}