PHP-多个mySQL查询(第一个基于用户获取ID),第二个获取具有ID的数据库中另一个项目的信息

问题描述 投票:0回答:2

我是编程和stackoverflow的新手,我在其他任何地方都找不到解决方案,所以我在这里。

这是我想要完成的事情:

[从用户名= ...的数据库中获取项目ID

->用户可以登录到不同的项目中,并且正在数据库中对其进行跟踪

下一步是获取项目数据库的信息以显示给用户

->但是由于用户可以登录到不同的项目中,所以我希望他以不特定的顺序在彼此下面看到它们(i a

这基本上是我试图开始工作的内容,它显示了正确的内容,但不幸的是停在了第一个项目上。我的假设是,它会在第一个项目ID处停止并且不会继续]

->我检查了一下代码中的哪些代码有效,并在切断信息收集查询后立即获得了所有project_id's

基本上是我现在正在使用的代码:

$sql = "SELECT project_id FROM project_members_db WHERE user_ID = '$user_id'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        // output data of each row
        while($row = $result->fetch_assoc()) {


            //Album Informationen ziehen herausfinden
            $sql = "SELECT project_name, sticker_count, manufacturer, sport, creation_datetime FROM project_db WHERE project_id = '$row[project_id]'";
            $result = $conn->query($sql);

            if ($result->num_rows > 0) {
            // output data of each row
            while($row = $result->fetch_assoc()) {
                    //OUTPUT

                    echo "

            $row['project_name'];
            $row['count'];
            $row['sport'];
            $row['manufacturer'];
            $row['creation_datetime'];

                    ";    
        }
    }
    }
}
php html mysql mysqli
2个回答
0
投票

您用第二个结果覆盖了第一个结果。更改为:

$sql = "SELECT project_id FROM project_members_db WHERE user_ID = '$user_id'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        // output data of each row
        while($row = $result->fetch_assoc()) {


            //Album Informationen ziehen herausfinden
            $sql = "SELECT project_name, sticker_count, manufacturer, sport, creation_datetime FROM project_db WHERE project_id = '$row[project_id]'";
            $result2 = $conn->query($sql);

            if ($result2->num_rows > 0) {
            // output data of each row
            while($row2 = $result2->fetch_assoc()) {
                    //OUTPUT

                    echo $row2['project_name'] . ' '
                $row2['count'] . ' '
            $row2['sport'] . ' '
            $row2['manufacturer'] . ' '
            $row2['creation_datetime'];    
        }
    }
    }
}

注意在您的字符串中放入数组不起作用,所以我将回声串联起来。


0
投票

看起来您应该可以通过单个查询来完成此操作-并且在接受用户提供的输入时,您应该考虑使用prepared statement

$sql='select `project_name`, `sticker_count`, `manufacturer`, `sport`, `creation_datetime`
    from `project_db` where `project_id` = ( select `project_id` from `project_members` where `user_id` = ? )';

$stmt=$conn->prepare( $sql );
$stmt->bind_param('s',$user_id);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($project_name,$sticker_count,$manufacturer,$sport,$creation_datetime);

while( $stmt->fetch() ){
    echo $project_name,$sticker_count,$manufacturer,$sport,$creation_datetime;
}
© www.soinside.com 2019 - 2024. All rights reserved.