嵌套While循环不起作用


Nested While Loop not working

我正在为android应用程序开发一个Web服务,该Web服务在PHP中从MySQL数据库获取数据。。。我遇到的问题是,有些项目有多个细节,但我的代码只为每个项目获取一个细节。我正在获取JSON格式的数据。

你可以在这里查看

这是我的代码

function requiredData(){
    $db = $this->dbConnection();
    //$sql = "SELECT * FROM projects JOIN project_details ON projects.project_id=project_details.project_id";
    $sql = "SELECT * FROM projects";
    $queryResult = $db->query($sql);
        if($queryResult->num_rows > 0){
            while($row = $queryResult->fetch_assoc()){
                $pid = $row['project_id'];
                $detailsql = "SELECT * FROM project_details WHERE project_id=$pid";
                $sqlResult = $db->query($detailsql);
                if($sqlResult->num_rows > 0){
                    while ($d = $sqlResult->fetch_assoc()){
                        $r = array(
                            "project_id" => $d['project_id'],
                            "project_detail" => array(
                                "work_done" => $d['project_detail'],
                                "payment_for_work" => $d['project_payment'],
                                "payment_status" => $d['project_payment_status'],
                                "detail_id" => $d['project_detail_id']
                            )
                        );
                    }
                }
                $results[$row['project_name']] = array(
                   "project_id" => $row["project_id"],
                   "project_start_date" => $row["project_start_date"],
                   "project_due_date" => $row["project_due_date"],
                   "project_currency" => $row["project_currency"],
                   "project_work_details" => $r 
                );

            }
        }
       return $results;
}

提前感谢您的帮助

问题在第二个while循环中。您正在将数组分配给$r,每次$r值都会覆盖。

所以,我现在把数组分配给另一个数组,它将变成二维数组,就像这样;

               while ($d = $sqlResult->fetch_assoc()){
                    $r[] = array(
                        "project_id" => $d['project_id'],
                        "project_detail" => array(
                            "work_done" => $d['project_detail'],
                            "payment_for_work" => $d['project_payment'],
                            "payment_status" => $d['project_payment_status'],
                            "detail_id" => $d['project_detail_id']
                        )
                    );
                }

现在您可以使用$r,它将具有项目的多个详细信息。