Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从某一行中选择“全部”后,是否有方法从未定义的某些列中获取数据?_Php_Mysql_Pdo - Fatal编程技术网

Php 从某一行中选择“全部”后,是否有方法从未定义的某些列中获取数据?

Php 从某一行中选择“全部”后,是否有方法从未定义的某些列中获取数据?,php,mysql,pdo,Php,Mysql,Pdo,因此,我的SELECT语句是从users表中的一行中选择all。该行中有一列标记为“user_level”,我想使用该列中的数据来区分管理员和来宾。有没有一种方法可以使用“user_level”(并可能将其绑定到会话变量),而无需编写另一条SELECT语句 if (isset($_POST['username'], $_POST['password'])) { $username = $_POST['username']; $password = md5($_POST['pass

因此,我的SELECT语句是从users表中的一行中选择all。该行中有一列标记为“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!';
        }
    }
}

这里不需要行计数。
以及一半重复和三次重复的代码

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!';

为什么不将查询作为数组返回而不是计数,然后执行
if($result['user\u level']>0)
?检查数组是否存在,以确保它们已登录。@YourCommonSense有点冒昧,你不这样认为吗?;)如果他们的用户级别为0,那么登录不会失败吗?