2014-01-19 146 views
0

我正试图从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>"; 

在这里我得到登录用户的当前用户名和尝试仅显示数据库中的数据,其中数据库中的用户名字段与登录用户的用户名相匹配。

我怎么能得到这个工作,因为我认为我做得不对?

+0

MySQL的功能已被弃用,请使用库MySQLi或PDO – 2014-01-19 14:45:28

+0

什么'逃生( )'做? – Oswald

+1

为什么你不使用会话? – Atieh

回答

3

看看你是否有错误的查询,并且如果她返回结果。

我认为你需要用用户名像'$user_name'

+0

哇,只要我把单引号它的工作。谢谢。 – Beep

2

你必须在你的代码工作。一旦用户被授权,例如将他们的用户名保存在$_SESSION['uname']中。并使用您的查询,搜索用户名= $_SESSION['uname']并获取所有相关数据。

了解更多:PHP MANUAL

+0

我知道,代码非常糟糕,过去的项目和教程很混乱,即时通​​讯仍在学习,但我会采纳您的建议并阅读手册。 – Beep

+0

@Beep会话使用情况已回答了如何将您的用户数据保存到我昨天回答您的上一个问题的会话中。 http://stackoverflow.com/questions/21196714/retrieve-current-users-id-from-database-to-use-in-new-tabel –

+0

会议将缓解你的生活,重要的是你要学会如何使用它们。他们帮助为某些页面提供限制,从而自定义和优化您尝试构建的服务。 – Atieh

0

user_name似乎是一个varchar场。值部分应该用双引号'$user_name'

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

如果你不使用会话存储用户状态,那么其他用户可以查看订单为其他用户所包围。

对于传递给数据库查询的值,您至少应该使用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>"; 
?> 

编辑: 使用会话从previous question瓦尔:

$_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)."'"); 
... 
... 
... 
?> 

希望它可以帮助

+0

+1'mysql_real_escape_string' – Atieh

+0

我明白,我用你的答案昨天与会议,它的工作原理。我试图提高我的编码只是学习(慢atm) – Beep

+1

@Beep只要你有顶级session_start()然后在会话中的值将可用,不适合更新一个片段 –