2013-03-13 52 views
0

我一直在研究社交网络,我有一个用户可以为他们最喜欢的乐队或名人创建个人资料的fanpage表,以及另一个名为friends的表可以订阅fanpages。然后我想让这些请求出现在fanpage管理员的通知中去除。 在第一次sql查询之后,它返回具有多个值的fanpage,但是如果我回显下一个$ sql查询,则表明它只选择一个结果来查询而不是全部查询。试图从第一个查询中获得结果以搜索第二个查询

所以基本上我需要查询fanpages表的所有fan_ages created_by用户登录($ log_username),然后我需要采取这些fanpages和查询朋友表,找出是否有人要求订阅用户粉丝网页?

这行代码$ fanpage_requests =“$ fansubSql”;输出SELECT * FROM的朋友WHERE user2 ='fan4'AND accepted ='0'ORDER BY datemade ASC作为唯一结果,但由于fan3和fan4都有请求,所以应该有2个结果。

感谢您的帮助迈克尔

$fanpage_requests = ''; 

$fansql = "SELECT created_by, fanpage_name FROM `fanpages` WHERE created_by = '$log_username' "; 
$fanquery = mysqli_query($db_conx, $fansql); 
$fannumrows = mysqli_num_rows($fanquery); 

if($fannumrows < 1){ 
    $fanpage_requests = 'No friend requests'; 
} else { 

    while($row = mysqli_fetch_array($fanquery, MYSQLI_ASSOC)) { 
     $fanpage_name = $row["fanpage_name"]; 
     $created_by = $row["created_by"]; 

     $fansubSql = "SELECT * FROM friends WHERE user2='$fanpage_name' AND accepted='0' ORDER BY datemade ASC"; 
     $fansubQuery = mysqli_query($db_conx, $fansubSql); 
     $fansubNumrows = mysqli_fetch_row($fansubQuery); 
     $fanpage_requests = "$fansubSql"; 

     if($fansubNumrows < 1){ 
      $fanpage_requests = "blah blah"; 
     } 

     while ($fansubRow = mysqli_fetch_array($fansubQuery, MYSQLI_ASSOC)) { 
      $fansubreqID = $fansubRow["id"]; 
      $fansubuser1 = $fansubRow["user1"]; 
      $fansubdatemade = $fansubRow["datemade"]; 
      $fansubdatemade = strftime("%B %d", strtotime($datemade)); 

      $fansubthumbquery = mysqli_query($db_conx, "SELECT avatar FROM users WHERE username='$user1' LIMIT 1"); 
      $fansubthumbrow = mysqli_fetch_row($thumbquery); 
      $fansubuser1avatar = $thumbrow[0]; 
      $fansubuser1pic = '<img src="user/'.$user1.'/'.$user1avatar.'" alt="'.$user1.'" class="user_pic">'; 

      if($fansubuser1avatar == NULL){ 
       $fansubuser1pic = '<img src="images/avatardefault.jpg" alt="'.$user1.'" class="user_pic">'; 
      } 

      $fanpage_requests .= '<div id="friendreq_'.$fansubreqID.'" class="friendrequests">'; 
      $fanpage_requests .= '<a href="user.php?u='.$fansubuser1.'">'.$fansubuser1pic.'</a>'; 
      $fanpage_requests .= '<div class="user_info" id="user_info_'.$fansubreqID.'">'.$fansubdatemade.' <a href="user.php?u='.$fansubuser1.'">'.$fansubuser1.'</a> requests friendship<br /><br />'; 
      $fanpage_requests .= '<button onclick="fanReqHandler(\'accept\',\''.$fansubreqID.'\',\''.$fansubuser1.'\',\'user_info_'.$fansubreqID.'\')">accept</button> or '; 
      $fanpage_requests .= '<button onclick="fanReqHandler(\'reject\',\''.$fansubreqID.'\',\''.$fansubuser1.'\',\'user_info_'.$fansubreqID.'\')">reject</button>'; 
      $fanpage_requests .= '</div>'; 
      $fanpage_requests .= '</div>'; 
     } 
    } 
} 

?>

回答

0

阅读文档。 mysqli_fetch_row不返回一个数字。它从查询中返回一条记录。查看文档中的示例:您需要在循环内使用mysqli_fetch_row来检索所有记录。

要知道查询返回的行数,请使用mysqli_num_rows

+0

好的,我看着你所取得的东西,并改变了第一部分看起来像这样$ fanpage_requests =''; $ fansql =“SELECT created_by,fanpage_name FROM'fanpages' WHERE created_by ='$ log_username'”; \t如果($ fanquery = mysqli_query($ db_conx,$ fansql)){ \t \t \t \t而($ fanrow = mysqli_fetch_array($ fanquery,MYSQLI_ASSOC)){ $ fanpage_name = $ fanrow [ “fanpage_name”]; $ created_by = $ fanrow [“created_by”]; \t \t \t $ fansubSql =“SELECT * FROM friends WHERE user2 ='$ fanpage_name'AND accepted ='0'ORDER BY datemade ASC”; – 2013-03-13 12:19:26

+0

但仍然没有区别 – 2013-03-13 12:19:58

+0

调试您的代码:使用“echo”在执行前打印变量或查询的值。使用“print_r”显示查询返回的记录。启用错误报告,检查您的错误日志。告诉我们你需要什么帮助,发布一个简短的相关代码片段,以及你得到的确切错误信息。你不使用“mysqli_error()”,你怎么知道你的一个查询是否失败? – Jocelyn 2013-03-13 15:28:46

相关问题