Php 仅在特定用户登录时显示特定数据

Php 仅在特定用户登录时显示特定数据,php,mysql,Php,Mysql,我试图从MySQL数据库中引入有关用户的数据。 我正在考虑编写一个查询,向登录的用户显示数据 代码 在这里,我获取当前登录用户的用户名,并尝试仅显示来自数据库的数据,其中数据库中的user_name字段与登录用户的user_name匹配 我认为我做得不正确,如何才能让它工作?查看查询中是否有错误,以及她是否返回结果 我认为您需要将用户名包装为“$user\u name”您必须编写代码。用户获得授权后,将其用户名保存在$_会话['uname']中,例如。使用您的查询,搜索用户名=$\u会话['un

我试图从MySQL数据库中引入有关用户的数据。 我正在考虑编写一个查询,向登录的用户显示数据

代码

在这里,我获取当前登录用户的用户名,并尝试仅显示来自数据库的数据,其中数据库中的user_name字段与登录用户的user_name匹配


我认为我做得不正确,如何才能让它工作?

查看查询中是否有错误,以及她是否返回结果


我认为您需要将用户名包装为“$user\u name”

您必须编写代码。用户获得授权后,将其用户名保存在$_会话['uname']中,例如。使用您的查询,搜索用户名=$\u会话['uname'],并获取所有相关数据

了解更多信息:

用户名似乎是一个varchar字段。值部分应该用引号“$user\u name”括起来


如果您不使用会话来存储用户状态,那么其他用户可以检查其他用户的订单

您至少应该在传递给数据库查询的值上使用mysql\u real\u escape\u字符串,否则您将受到攻击,理想情况下,您应该在mysqli或PDO中使用参数化查询,您所做的已经过时

但是,如果在编写臭烘烘的代码之前,您固执且不愿意改变方式,那么请尝试类似的方法

<?php 
$user = new User();
$user_name = escape($user->data()->username);

$result = mysql_query("SELECT * FROM orders WHERE user_name = '".mysql_real_escape_string($user_name)."'");

echo '<table border="1"><tr><th>My bookings</th></tr>';
if(mysql_num_rows($result) > 0){
    while($row = mysql_fetch_array($result)){
        echo "<tr><td>".$row['user_name']."</td></tr>";
    }
}else{
    echo "<tr><td>No bookings</td></tr>";
}
echo "</table>";
?>

希望有帮助

mysql函数不推荐使用请使用mysqli或PDO escape做什么?为什么不使用sessions?@user689请解释一下,对不起,我是php新手,你会知道我的意思。我知道,代码很糟糕,过去的项目和教程很混乱,我仍在学习,但我会接受您的建议并阅读手册。@Beep会话用法已在我昨天对您上一个问题的回答中回答了如何将您的用户数据保存到会话中。课程将使你的生活变得轻松,学习如何使用它们是至关重要的。它们有助于对某些页面进行限制,从而自定义和优化您试图构建的服务。@Atieh我将尝试使用会话构建一个非常小的项目,因为目前我无法完全正确地理解它。但是我学习很慢,谢谢你的建议。我明白,我昨天在课程中使用了你的答案,效果很好。我正在努力改进我的编码,只是学习速度慢atm@Beep只要会话_开始在顶部,那么会话中的值就可用,我将使用snippet@LozCherone好的,谢谢你,我将不得不在我的php上做更多的工作,但是谢谢你的帮助和建议,这真的很有帮助。
$result = mysql_query("SELECT * FROM orders WHERE user_name = '$user_name'");
<?php 
$user = new User();
$user_name = escape($user->data()->username);

$result = mysql_query("SELECT * FROM orders WHERE user_name = '".mysql_real_escape_string($user_name)."'");

echo '<table border="1"><tr><th>My bookings</th></tr>';
if(mysql_num_rows($result) > 0){
    while($row = mysql_fetch_array($result)){
        echo "<tr><td>".$row['user_name']."</td></tr>";
    }
}else{
    echo "<tr><td>No bookings</td></tr>";
}
echo "</table>";
?>
<?php 
session_start();

//check session username is set 
if(!isset($_SESSION['user_data']->username))
    exit(header('Location: index.php'));

$result = mysql_query("SELECT * FROM orders WHERE user_name = '".mysql_real_escape_string($_SESSION['user_data']->username)."'");
...
...
...
?>