根据用户名或id从数据库中检索特定行


Retrieve a particular row from database based on username or id

希望有人能在这里帮助我,我创建了一个有1个以上用户的系统,每个用户都有一个唯一的用户名和id。我现在的问题是,我如何设置我的系统,当用户登录时,系统会指示用户根据他们的用户名或id查看数据库中的特定行。

我访问数据库的代码是:

<?php

$con = mysql_connect("localhost","root","");
mysql_select_db("uloaku", $con);
$count = 1;
$y = mysql_query("SELECT * FROM transaction WHERE username = '".$_SESSION['username']."' LIMIT 1");
if(mysql_num_rows($y) != 0){
echo "<table border='"1'" width='"800'" >";
echo "<tr id='"bold'">
<td>No</td>
<td align='"center'" width='"120'">Account Owner</td>
<td align='"center'" width='"120'">Deposit Date</td>
<td align='"center'" id='"bold'" width='"150'">Current Balance</td>
<td align='"center'" width='"150'">Available Balance</td>
<td align='"center'">Account Status</td>
</tr>";
while ($z = mysql_fetch_array($y, MYSQL_BOTH)){
        echo "<tr>
        <td>".$count++."</td>
        <td id='"color'" align='"center'">".$z[1]."</td>
        <td id='"color'" align='"center'">".$z[2]."</td>
        <td id='"color'" align='"center'">".$z[3]."</td>
        <td id='"color'" align='"center'">".$z[4]."</td>
        <td id='"color3'" align='"left'">".$z[5]."</td>
        </tr>";
    }
    echo "</table>";
    }
?>

我的登录页面看起来像这样:

<?php
session_start();
$_SESSION['username'] = $username;
$username = $_POST['username'];
$password = $_POST['password'];
if ($username&&$password)
{
$connect = mysql_connect("localhost","root","") or die("cannot connect!");
mysql_select_db("uloaku") or die("cannot find data base!");
$query = mysql_query ("SELECT * FROM keyaku WHERE    username='".mysql_real_escape_string($username)."' AND     password='".mysql_real_escape_string($password)."'");
$numrows = mysql_num_rows($query);
if ($numrows!=0)
{
while ($row = mysql_fetch_assoc($query))
{
    $dbusername = $row['username'];
    $dbpassword = $row['password'];
}
if ($username==$dbusername&&$password=$dbpassword)
{
    echo "Welcome $username";
}
else
    echo "Invalid Password";
}
else
die("Invalid User");
}
else
 die("Please Enter a UserName and Password.");
?>

到目前为止,我的登录按我的意愿运行,我的数据库检索信息——唯一的问题是它检索数据库中的所有信息,但我希望它根据登录的用户的用户名或id检索信息

首先,我敢打赌这段代码根本不起作用:

$query = mysql_query ("SELECT * FROM keyaku WHERE        username='$username'&&password='$password'");

不存在&amp;在MySQL中,因此查询将返回空结果。如果你想让它工作,至少可以这样做(也可以防止SQL注入!):

$query = mysql_query ("SELECT * FROM keyaku WHERE username='".mysql_real_escape_string($username)."' AND password='".mysql_real_escape_string($password)."'");

其次,你需要一些方法来存储你的登录信息,这样以后就可以重复使用。如果你可以使用会话,最简单的方法是存储用户名(或链接到你需要的行的任何信息):

$_SESSION['username'] = $username;

然后,在您的第一个页面中,更新SQL,如下所示(根据需要更改列ID):

$y = mysql_query("SELECT * FROM transaction WHERE username = '".$_SESSION['username']."' LIMIT 1");

如果事务表中的username字段被索引为主键/唯一键,那么您甚至不需要LIMIT 1部分。