从某一行中选择所有行后,是否有办法从未定义的某些列中获取数据?

时间:2013-06-25 16:03:41

标签: php mysql pdo

所以我的SELECT语句是从users表中的一行中选择所有。该行中有一列标记为“user_level”,我想使用该列中的数据来区分管理员和访客。有没有办法使用“user_level”(并可能将它绑定到会话变量)而不必编写另一个SELECT语句?

if (isset($_POST['username'], $_POST['password'])) {
    $username = $_POST['username'];
    $password = md5($_POST['password']);

    if (empty($username) or empty($password)) {
        $error = 'All fields are required!';
    } else {
        $query = $pdo->prepare("SELECT * FROM users WHERE user_name = :name and
 user_password = :password");

        $query->bindValue(":name", $username, PDO::PARAM_STR);
        $query->bindValue(":password", $password, PDO::PARAM_STR);

        $query->execute();

        $num = $query->rowCount();

        if ($num == 1) {
            //user entered correct details
            $_SESSION['logged_in'] = true;

            header('Location: index.php');
            exit();
        } else {
            //user entered false details
            $error = 'Incorrect details!';
        }
    }
}

1 个答案:

答案 0 :(得分:0)

这里你不需要rowCount 以及一半重复和重复的代码。

if (isset($_POST['username'], $_POST['password'])) {
    $username = $_POST['username'];
    $password = md5($_POST['password']);

    $sql = "SELECT user_level FROM users WHERE user_name = ? and user_password = ?";
    $stm = $pdo->prepare($sql);
    $srm->execute(array($username,$password));
    $level = $stm->fetchColumn();
    if ($level !== FALSE) {
        //user entered correct details
        $_SESSION['user_level'] = $level;
        header('Location: index.php');
        exit();
    }
}
$error = 'Incorrect details!';