根据if条件优化PHP变量

时间:2016-03-31 21:45:50

标签: php mysql

我有一个用户页面,默认显示系统中的所有用户。

我正在尝试应用过滤器,以便用户可以优化对用户的搜索。例如,查看所有男性用户。

默认情况下,要显示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'";
        }
    }
} 

1 个答案:

答案 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