0

我有一个以会话电子邮件开头的登录表单。现在,由于我希望能够通过表单更新电子邮件地址,而不会破坏会话,因此我需要将会话更改为 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;
} 
?>
4

2 回答 2

1

那是因为您正在truefetch_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
}
于 2013-04-15T03:18:37.857 回答
1

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

于 2013-04-15T00:08:24.260 回答