2014-04-08 41 views
0

中创建我的帐户页面我正在尝试创建一个我的帐户页面,用户可以在这里查看他们在注册页面上输入到站点中的信息。我只希望它显示当前登录的用户的信息。如何在php

这是我的就是我有这么远,但它不工作

<?php 
    include_once('DBconnect.php'); 


    $sql= "SELECT * FROM users WHERE username='".$username."'"; 
    $res = mysql_query($sql) or die(mysql_error()); 

    while ($row = mysql_fetch_assoc($res)){ 
     $username = $row['username']; 
     $firstname = $row['first_name']; 
     $lastname = $row['last_name']; 
     $email = $row['email']; 
     $school = $row['school']; 
     $topics .= "<tr><td>username:".$username." </td><td>First name:".$firstname."</td><td>Last name:".$lastname."</td><td>email: ".$email."</td><td>school: ".$school."</td></tr>"; 
    echo $topics; 
    } ?> 
+0

尝试使用mysqli_ *而不是使用mysql。你在哪里传递你的$用户名? –

+0

“它不工作”非常含糊 - 是否给出了具体的错误? – Helpful

+3

我没有看到'$ username'在代码中的定义,你是否保存到会话中?它是否来自以前的登录页面?提供更多的信息,其 – Prix

回答

0

尝试在函数封装你mysql_fetch_assoc()的返回一个数组结果集像这样:

function populate_array($res) { 
    while ($row = @mysql_fetch_assoc($res) { 
    $result_array[] = $row; 
    } 
    return $result_array; 
} 

然后使用用于环路直通的结果集,像这样进行迭代:

$result = populate_array($res); 
$sets = count($result); 

for($i=0;$i<$sets;$i++) { 
    $topics .= $result[$i]['username'] . $result[$i]['firstname'] . $result[$i]['lastname']; // continue 
} 

echo $topics; 
0

你的变量$username从哪里来?你的代码看起来很好。你有任何错误?一些改进可以使有:

  1. 使用Mysqli_ * extenstion或PDO扩展,因为mysql_ *是过时的和即将
  2. 删除你把它们放在一个查询使用前
  3. 让您远离变量:
    • mysql_real_escape_string()
    • mysqli_real_escape_string()
    • PDO ::引用()
    • 或制备的报表与库MySQLi和PDO

你可以尝试添加:

if (!$res) { 
    echo "Could not successfully run query ($sql) from DB: " . mysql_error(); 
    exit; 
} 

if (mysql_num_rows($result) == 0) { 
    echo "No rows found"; 
    exit; 
} 

,看看你得到一个错误

编辑:

您的用户名通常来自您的形式,或者如果用户是已经从$_SESSION[] Global登录。但是,如果用户登录,则可以更好地将所有信息存储到会话中,因此您无需始终从数据库请求该信息。

如果用户成功登录,你必须调用$_SESSION['username'] = $username; 然后在此页面,您可以拨打$username = $_SESSION['username'];

而且不要忘记调用session_start();使用会话

+0

这是我得到的时候,我把你的代码。 注意:Undefined变量:uid在C:\ xampp \ htdocs \ Site \ Site \我的account.php在第30行 未找到行 – user3501382

+0

您找不到行的原因是因为您没有指定用户名所以它不会返回任何东西。我不知道uid来自哪里。我没有看到它在这个页面上的任何地方。你可以发布你的DBconnect.php。我修改了我的答案和一些额外的解释 –

0

你需要在每一页上从会话中调用您$用户名,请尝试下面的代码:

<?php 
    include_once('DBconnect.php'); 

    $username = $_SSESSION['username']; 
    $sql= "SELECT * FROM users WHERE username='".$username."'"; 
    $res = mysql_query($sql) or die(mysql_error()); 

    while ($row = mysql_fetch_assoc($res)){ 
     $username = $row['username']; 
     $firstname = $row['first_name']; 
     $lastname = $row['last_name']; 
     $email = $row['email']; 
     $school = $row['school']; 
     $topics .= "<tr><td>username:".$username." </td><td>First name:".$firstname."</td><td>Last name:".$lastname."</td><td>email: ".$email."</td><td>school: ".$school."</td></tr>"; 
    echo $topics; 
    } ?> 
+0

注意:未定义的索引:C:\ xampp \ htdocs \ Site \ Site \我的account.php上的用户名在第30行我得到此错误当我尝试此代码 – user3501382

+0

您复制粘贴我的代码?哪个用户名发生错误?你将$ username更改为$ name,并查看返回的结果 –

+0

是的,我复制了你的代码,并在include_once下面的第一个代码中复制。我试过把它改为$ name,并且我得到相同的错误。我可以使用此代码获得所有结果的输出,但我只需要登录的当前用户 – user3501382