首页 > 解决方案 > 多个 MySQL 查询(第一个根据用户获取 id)第二个获取数据库中具有 id 的另一个项目的信息

问题描述

我正在尝试完成以下任务:

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

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

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

-> 但是由于用户可以登录到不同的项目中,我希望他以尚未确定的顺序在彼此下方看到它们(我是

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

-> 我检查了代码的哪些代码有效,一旦切断信息收集查询,我就会得到所有 project_id

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

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

                "; 
            }
        }
    }
}

标签: phpmysqlmysqli

解决方案


看起来您应该能够通过单个查询来执行此操作 - 当您接受用户提供的输入时,您应该考虑使用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;
}

推荐阅读