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