2015-12-28 172 views
0

我正在开发一个web服务和android应用程序web服务是在PHP从MySQL数据库获取数据...我遇到的问题是,一些项目有多个细节,但我的代码是只为每个项目提供一个细节。我以JSON格式获取数据。嵌套的while循环不工作

您可以检查此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; 
} 

感谢您的帮助

+0

什么?我检查了你指定的链接,它显示了多个项目。你到底想要什么? – Umair

+0

一些项目有多个project_details ...但目前有一个显示...例如项目ID 20有多个project_detail数组,,,但只有一个显示出来... – FaISalBLiNK

回答

0

的问题是在第二while循环。您正将数组分配到$r,并且每次都覆盖$r值。因此,我现在将数组赋值给另一个数组,所以它会变成2维数组,如下所示:

   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,它会有多个项目细节。

+0

我已经测试过,当我使用$ r []我得到一个无限循环...我编辑了代码,并用$ r []替换$ r为你的这个... http://projects.base29.com/webservice/?q=projects – FaISalBLiNK

+0

使用'$ r []',没有任何东西可以无限循环,看起来你的数据库中有太多的记录。你有没有尝试通过限制选择项目查询? – JazyK

+0

嗯..没有尝试限制记录...没有来到我的脑海中..会尝试让你知道... – FaISalBLiNK