[英]Only show certain data when certain user logged it
我正在尝试从MySQL数据库引入有关用户的数据。 我当时正在考虑编写一个查询,以显示与登录用户共同赞助的数据数据。
码
$user = new User();
$user_name = escape($user->data()->username);
$result = mysql_query("SELECT * FROM orders WHERE user_name = $user_name");
echo "<table border='1'><tr><th>My bookings</th></tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['user_name']. "</td>";
echo "</tr>";
}
echo "</table>";
在这里,我获取当前已登录用户的用户名,并尝试仅显示数据库中数据库中的user_name字段与已登录用户的user_name匹配的数据。
我以为我做错了怎么办?
看看查询中是否有错误,以及她是否返回结果。
我认为您需要将用户名包装为'$user_name'
您必须处理您的代码。 授权用户后,将其用户名保存在$_SESSION['uname']
中。 然后使用您的查询,搜索用户名= $_SESSION['uname']
并获取所有相关数据。
了解更多: PHP MANUAL
如果您不使用会话来存储用户状态,则其他用户可以检查其他用户的订单。
您至少应在传递给数据库查询的值上使用mysql_real_escape_string()
,否则您将被黑,理想情况下,应将参数化查询与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>";
?>
编辑:使用上一个问题的会话变量:
$_SESSION['user_data']->username
<?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)."'");
...
...
...
?>
希望能帮助到你
user_name
似乎是varchar
字段。 值部分应用引号'$user_name'
包围
$result = mysql_query("SELECT * FROM orders WHERE user_name = '$user_name'");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.