嵌套While循环不起作用

时间:2015-12-28 11:17:39

标签: php arrays json while-loop

我正在开发一个web服务和Android应用程序,web服务在PHP中从MySQL数据库中获取数据...我遇到的问题是某些项目有多个细节,但我的代码只提取了一个细节每个项目。我正在以JSON格式获取数据。

您可以查看Here

这是我的代码

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

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

问题出在第二个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,它将包含项目的多个详细信息。