【问题标题】:Trying to get the results from first query to search a second query试图从第一个查询中获取结果以搜索第二个查询
【发布时间】:2026-01-19 23:45:01
【问题描述】:

我一直在开发一个社交网络,我有一个粉丝页面表,用户可以为他们最喜欢的乐队或名人创建个人资料,还有一个名为朋友的表,他们可以订阅粉丝页面。然后,我希望请求出现在粉丝页面管理员的通知中,以除外。 在第一个 sql 查询之后,它返回具有多个值的粉丝页面,但是如果我回显下一个 $sql 查询,它表明它只选择一个结果来查询而不是全部。

所以基本上我需要查询用户登录的所有粉丝页面($log_username)的粉丝页面表,然后我需要获取这些粉丝页面并查询朋友表以了解是否有人请求订阅用户的粉丝页面??

这行代码 $fanpage_requests = "$fansubSql";输出 SELECT * FROM friends WHERE user2='fan4' AND accepted='0' ORDER BY datemade ASC 作为唯一结果,但应该有 2 个结果,因为 fan3 和 fan4 都有请求。

感谢您的帮助迈克尔

$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>';
        }
    }
}

?>

【问题讨论】:

    标签: php mysqli


    【解决方案1】:

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

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

    【讨论】:

    • 好的,我查看了您的建议并将第一部分更改为如下所示 $fanpage_requests = ''; $fansql = "SELECT created_by, fanpage_name FROM fanpages WHERE created_by = '$log_username' "; if ($fanquery = mysqli_query($db_conx, $fansql)){ while($fanrow = mysqli_fetch_array($fanquery, MYSQLI_ASSOC)) { $fanpage_name = $fanrow["fanpage_name"]; $created_by = $fanrow["created_by"]; $fansubSql = "SELECT * FROM friends WHERE user2='$fanpage_name' AND accepted='0' ORDER BY datemade ASC";
    • 但仍然没有影响
    • 调试代码:使用“echo”在变量或查询执行前打印它们的值。使用“print_r”显示查询返回的记录。启用错误报告,检查您的错误日志。告诉我们您究竟需要什么帮助,发布一个简短且相关的代码 sn-p,以及您收到的确切错误消息。你不使用“mysqli_error()”,你怎么知道你的查询是否失败?
    • echo $fannumrows 回显数字 6,这是正确的,有 6 个由 jeff 创建的粉丝页面