如何获取数据库中特定行的相应user_id(自动增量)值?

问题描述:

我的表有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 –

(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(); 
?> 

这些行后:

$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

isset($check)心不是保存在这一点上,为$值检查更好地检查和else{}的arent需要它不管用。

的几个问题在这里:

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