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

时间:2012-09-09 16:09:48

标签: php mysql phpmyadmin

希望有人可以帮助我, 我创建了一个超过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检索信息登录的人

1 个答案:

答案 0 :(得分:1)

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

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

......没有&amp;&amp;和在MySQL中,因此查询将返回空结果。如果你想让它起作用,至少要这样做(也要阻止SQL injection!):

$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");

...如果您的交易表中的用户名字段被编入主要/唯一密钥,则您甚至不需要LIMIT 1部分。