2016-09-29 108 views
1

我的表有2列,user_id和username。用戶帳號像這樣登錄:如何獲取數據庫中特定行的相應user_id(自動增量)值?

<?php 

require('dbConnect.php'); 

$username = $_POST['username']; 

//need to keep this in a session, for other pages later on 
session_start(); 
    $_SESSION['username'] = $username; 

$sql = "SELECT * FROM user WHERE username = '$username'"; 
$result = mysqli_query($con,$sql); 

$check = mysqli_fetch_array($result); 

if(isset($check)) : 

//if the username exists in the database, then show a html submit button 
$con->close(); 
?> 
    <html> 
<body> 
<form action="UserDetails.php" method="post"> 
<input type="submit"> 
</form> 
    </html> 

<?php else :{ 
    //if user is not in db, show this message 
     echo 'Sorry about that, you can't come in.'; 
    } 
    $con->close(); 
?> 
<?php endif; ?> 

我怎樣才能獲得對應的用戶名,將在以後的頁面上使用的USER_ID?

+0

你的意思是你要訪問'USER_ID '在* UserDetails.php *頁面上,對嗎? –

+0

從你的SELECT –

回答

0

(isset($check))似乎害我麻煩,有時返回user_id,有時沒有。

非常感謝Nabeel的回答,這個想法對我很有幫助。也感謝Solrac Ragnarockradio的把我的軌道上,使我的代碼以mysqli_real_escape_string更安全:

<?php 
require('dbConnect.php'); 

$username = mysqli_real_escape_string($con,$_POST['username']); 

$sql = "SELECT * FROM user WHERE username = '$username'"; 
$result = mysqli_query($con,$sql); 

$row = mysqli_fetch_assoc($result); 
$user_id = $row["user_id"]; 

//give me the corresponding user_id of the logged in user 
echo $user_id; 

if (mysqli_num_rows($result)==0) { 
    echo "Failed, sorry"; 
} 

if (mysqli_num_rows($result) > 0) { 
    echo "User id exists already."; 

    } 

$con->close(); 
?> 
1

這些行後:

$sql = "SELECT * FROM user WHERE username = '$username'"; 
$result = mysqli_query($con,$sql);  

添加這些行:

$row = mysqli_fetch_assoc($result); 
$user_id = $row["user_id"]; 
+1

的結果集得到它,如果你想使用其他頁面$ user_ID的爲好,使用會話。 – Nabeel

+0

謝謝,但它只工作重複我的數據庫, 不是單一的條目。例如,'USER_ID = 1,用戶名=比爾;'給我沒事的時候我贊同'$ user_id',但如果我有一個像'USER_ID = 1,用戶名=比爾複印件; USER_ID = 2,用戶名= Bill',當我回聲 '$ user_id'我得到'1'。有任何想法嗎? – CHarris

0

isset($check)心不是保存在這一點上,爲$值檢查更好地檢查和else{}的arent需要它不管用。

2

的幾個問題在這裏:

1)如果你正在使用"SELECT * FROM user WHERE username = $1然後用戶名列應該是UNIQUE念念不忘逃避你輸入:

<?php 
$username = mysqli_real_escape_string($con, $_POST['username']); 
$sql_query = mysqli_query($con,"SELECT * FROM user WHERE username = '$username'"); 

2)你可以檢查,如果您有任何結果B4任何東西,如從數據庫直籤的瓦爾...

if (mysqli_num_rows($sql) == 0) { 
$error = "This user doesn't exists here..."; 
}else{ 
    $user_info = mysqli_fetch_assoc($sql_query); 
    $_SESSION['username'] = $user_info['username']; 
    $_SESSION['user_id'] = $user_info['user_id']; 

} 

$con->close(); 
?> 

然後你可以任何你想要在用戶登錄,如果$_SESSION['user_id']實際上是有輸出...

<html> 
<body> 
    <form action="UserDetails.php" method="post"> 
    <input type="submit"> 
    </form> 
</body> 

<?php 
echo 'Well, here\'s the output: <b>'. (isset($_SESSION['user_id']) ? $_SESSION['username'] : $error).'</b>'; 
+0

加1爲mysql_real_escape_string提示,我現在已經做了。 – CHarris

+0

但是使用mysqli。 – Elin

+0

謝謝艾琳,我剛剛更新了我的答案。 – Solrac

相關問題