我正在为我的网站上的一个用户制作一个个人资料页,在那里这个人可以改变他/她的信息。我应该可以更改,名称,姓氏,用户名,代码等。但我已经开始使用用户名。
当一个人登录时,我将用户名存储在会话中:
index.php
<?php
if( !isset( $_SESSION['username'])) include('resources/auth/login.php');
else exit( header('Location: home.php') );
if( !isset( $_SESSION ) ) session_start();
// Logout Session
if( isset( $_GET['todo'] ) && $_GET['todo'] == 'logout'){
session_unset();
session_destroy();
//echo 'You have been logged out!';
}
?>我做了个测试
profile.php:
<?php
if( !isset( $_SESSION ) ) session_start();
?>
<?php //echo $_SESSION['username'];?> 这就叫我的用户名
但是,如果我想从mysql数据库调用属于这个用户名的名字,我应该使用session[username]吗?我开始为它做一个SQL查询:
<?php
$stmt = $mysqli->prepare("SELECT firstname FROM login");
$stmt->execute();
$fname = null;
$stmt->bind_result($fname);
while($stmt->fetch()) {
echo $fname;
}
$stmt->close();
$mysqli->close();
?>这是可行的,但是调用数据库中的所有名字。因此,我尝试设置u_id,这是db = to存储的会话变量中的PK:
$stmt = $mysqli->prepare("SELECT firstname FROM login WHERE u_id=$username");和
$stmt = $mysqli->prepare("SELECT firstname FROM loginWHERE u_id = '.$_SESSION[username]'";但是这里我得到了一个错误:未定义的变量: profile.php中的用户名
有人知道为什么吗?
发布于 2016-03-22 22:00:43
如果我很了解你,我想这个问题是:
$stmt = $mysqli->prepare("SELECT firstname FROM login WHERE u_id=$username");应该是这样:
$stmt = $mysqli->prepare("SELECT firstname FROM login WHERE username ='.$_SESSION[username].'");
//forgive my syntax issues如果您想检索记录的用户的名字,where子句的参数应该是用户的用户名,因为这是标识用户的唯一方法,但是我建议您也在会话中设置用户的id,以便where参数现在获得用户的唯一id。这是确保为特定用户检索信息的更好方法,因为两个用户可能具有相同的用户名,因此当where子句将其作为参数时,它将从数据库中检索两行,这肯定会导致问题。
发布于 2016-03-22 22:00:05
很有可能你没有开始这个会议。我只知道写$_SESSION‘’username‘而不是u_id =’。$_SESSIONusername的
https://stackoverflow.com/questions/36165849
复制相似问题