通过从MySQL获取id将$ _SESSION ['name']更改为$ _SESSION ['id]

时间:2013-04-15 00:04:58

标签: php mysql pdo

我有一个登录表单,以会话电子邮件开头。现在,因为我希望能够通过表单更新电子邮件地址,而不会中断会话,我需要将会话更改为id。问题是它不会将id值发送给会话,它只给我1值,如下所示:www.mysite.com/profile.php?uid = 1而不是返回真实的id号。

有什么想法吗?

<?php
if(isset($_SESSION['email'])){
    $_SESSION['uid'] = fetch_user_id($_SESSION['email']);
    header("Location: profile.php?uid=" . $_SESSION['uid']);
    die();
}
?> 

<?php 
function fetch_user_id($email){
    global $db;
    $query = $db->query("SELECT id FROM user WHERE email='{$_SESSION['email']}'");
    $row = $query->fetch(PDO::FETCH_ASSOC);
    return true;
} 
?>

2 个答案:

答案 0 :(得分:1)

$row正在存储结果,即找到的结果的(数组),你想要的是$row['id']

答案 1 :(得分:1)

这是因为您从true函数返回值fetch_user_id。为了获得正确的结果,您需要从$row数组中返回用户ID。

function fetch_user_id($email) {
    global $db;
    $query = $db->query("SELECT id FROM user WHERE email='{$_SESSION['email']}'");
    $row = $query->fetch(PDO::FETCH_ASSOC);
    return $row['uid']; // whatever your user id column is called
}