2014-05-10 108 views
0

这段代码有一些问题,我试图从我的数据库中获取完整的信息列表,其中user2等于登录用户,状态为'1'。例如,这里是我的数据库:数据阵列无法正常工作?

user1: 76, 11, 11, 87 
user2: 11, 22, 15, 11 
status: 1, 1, 1, 1 

这里是我的PHP代码:

<? 
$user_id = $_SESSION['userid']; 

$data = mysql_query(" 
    SELECT 
     user1 
    FROM 
     friend_requests 
    WHERE 
     user2 = '$user_id' 
    AND 
     status = '1' 
") or die(mysql_error()); 

$friend_list = mysql_fetch_array($data); 
foreach($friend_list as $friend_list) { 
    echo $friend_list, '<br>'; 
} 
?> 

此代码只显示号码“76”,因为它是第一个数字,等于选择在数据库(以'11'登录)。然而,同样的情况下的数字“87”没有显示?另外它不会让我显示“状态”?任何想法如何得到这个工作?我是这类东西的新手。谢谢!

P.S我知道MySQL已经过时了,但我现在没有办法做到这一点。

+2

MySQL没有过时。 PHP的mysql_ API已弃用。 – Strawberry

+0

首先:如果你想显示更多的字段,你需要将它们添加到你的查询中。 '选择user1,user2,status FROM ...'。第二:如果你想获取多于一个数据行,你需要多次执行'mysql_fetch_array'。最好的方法是使用像@ iCode4U或@MarkS这样的while循环来做它的答案。 – endofsource

回答

0

试试这个

<? 
    $user_id = $_SESSION['userid']; 

    $data = mysql_query(" 
     SELECT 
      user1,status 
     FROM 
      friend_requests 
     WHERE 
      user2 = '$user_id' 
     AND 
      status = '1' 
    ") or die(mysql_error()); 

    while($friend_list = mysql_fetch_array($data))//added this 
    { 

     echo $friend_list[¨user1¨].$friend_list[¨status¨].'<br>'; 

    } 
    ?> 
+0

虽然所有的结果都显示两次,但它完美地工作吗? – Jessiikah1992

+0

现在尝试没有foreach – iCode4U

0

在你的代码只获取一行数据。这是因为从mysql_fetch_array取结果集只有一个“行”:

$friend_list = mysql_fetch_array($data); 

这就是为什么你的foreach仅得到1行,dispplays它。 如果你想获得完整列表,获取这样的数据:

while($friend_list = mysql_fetch_array($data)) { 
    echo $friend_list, '<br>'; 
} 

在这种情况下循环将读取行untin会有数据获取。