获取特定的db值

时间:2014-03-16 16:12:46

标签: php

我使用PDO连接到我的数据库。在那里,我有一个用于存储用户的表。在该表中,我有5列:id,用户名,密码,邮件和性别。

我真正想要的是存储在SESSION变量中,即已登录用户的性别。我不确切知道要使用什么,因为我所见过的所有例子,通常用于使用foreach语句将db的所有结果打印到网页中,但这不是我想要的。

实际上,这是我的代码:

$connection = new PDO('mysql:host=localhost;dbname=db', "user", "password");
$sql = 'SELECT * FROM users WHERE username = :username AND password = :password';

$statement = $connection->prepare($sql);

$statement->bindParam(':username', $_POST['username'], PDO::PARAM_STR, 12);
$statement->bindParam(':password', $_POST['password'], PDO::PARAM_STR, 30);
$result = $statement->execute();

if ($result) {
    $result = $statement->fetchAll();
    if (!empty($result)){
        $_SESSION['login'] = true;
        $_SESSION['username'] = $_POST['username'];
        echo 'Hello '.$_POST['username'].', you have been connected successfully.';
    }
    else {
        echo 'Sorry, this user do not exist.';

    }
}

所以,这是正确的工作 但现在,我想要的是将数据库中的性别值存储在$ _SESSION [' sex']变量中。我怎样才能做到这一点?

感谢。

2 个答案:

答案 0 :(得分:0)

只需从结果行中分配:

$_SESSION['sex'] = $result[0]['sex'];

您必须使用[0]因为您使用了fetchAll,它会返回行和列的二维数组。

答案 1 :(得分:0)

您只需在用户名后添加会话,您已经从查询中选择了

$_SESSION['username'] = $_POST['username'];
$_SESSION['sex'] = $result[0]['sex'];

您可能希望从查询执行中删除$result,所以此行

$result = $statement->execute();

将是

$statement->execute();