2014-04-08 39 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