我有一个用户页面,默认显示系统中的所有用户。
我正在尝试应用过滤器,以便用户可以优化对用户的搜索。例如,查看所有男性用户。
默认情况下,要显示users.php
上的所有用户,我默认运行此查询:
$get_all_users = "SELECT * FROM users";
但是当用户例如选择他们想要查看系统上的所有女性用户时,我想运行此查询(示例):
$get_all_users = "SELECT * FROM users WHERE gender = 'female'";
但由于某种原因,默认显示所有用户的查询始终在执行。这是我的方法:
// get gender from radio buttons
$refined_gender = htmlentities (strip_tags(@$_POST['gender']));
$get_all_users = "SELECT * FROM users";
if (isset($_POST['submit'])){
if (isset($_POST['gender'])) {
if ($refined_gender){
$get_all_users = "SELECT * FROM users WHERE gender = '$refined_gender'";
}
}
}
答案 0 :(得分:0)
就像我将构建WHERE子句(至少类似于此) 未经过测试
$get_all_users = "SELECT * FROM users" . buildWhereClause($_POST);
function buildWhereClause($_POST) {
$where = 'WHERE 1=1';
foreach($_POST as $k => $v) {
//check if $v is valid with a different function
switch($k) {
case 'gender':
$where .= sprintf('AND `gender` = `%s`', $v);
break;
case 'age':
$where .= sprintf('AND `age` = %d', $v);
break;
}
}
return $where;
}
这是一个非常蹩脚的功能,不应该按原样使用。正如它可能导致的一个例子。我确信这样做很聪明,你不总是想要AND
。