2017-12-22 8 views
-1

Ms SQL Server 2008からデータをフェッチしました。私は3回のクエリを1回と1回の実行で実行しました。最初のクエリは学生の詳細とマーク、2番目のクエリは合計マークであり、3番目のクエリは試験名です。PHP - whileループの問題

私は問題がループが1つのレコードだけを表示しているが実際には、4つのレコードがあるということです。 3つのレコードは表示されません。

Marks1.php

$reg = $_GET['reg']; 

$sql = "select b.std_Name,d.Standard,e.Division,a.ExamDate,f.subject,a.ExamName,a.Marks,a.TotalMarks,a.PassingMarks 
            from Marks_mas a inner join std_reg b on a.regno=b.regno 
            INNER JOIN Subject_mas as f ON a.Subject_ID = f.Subject_ID 
            inner join StandardMaster d on a.standard = d.STDID 
            inner join DivisionMaster e on a.Division = e.DivisionID 
            where a.RegNo= '$reg' order by a.ExamDate; select sum(a.Marks) as Marks,sum(a.TotalMarks) as TotalMarks, (sum(a.Marks)/sum(a.TotalMarks) * 100) as Percentage 
            from Marks_mas a 
            where a.RegNo= '$reg'; select distinct ExamName From Marks_mas;"; 

$stmt = sqlsrv_query($conn, $sql); 

$result = array(); 

if (!empty($stmt)) { 
     // check for empty result 
     if (sqlsrv_has_rows($stmt) > 0) { 

      //$stmt = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); 



      while ($stmt = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)){ 
      $marks = array(); 
      $marks["std_Name"] = $stmt["std_Name"]; 
      $marks["Standard"] = $stmt["Standard"]; 
      $marks["Division"] = $stmt["Division"]; 
      $marks["ExamDate"] = $stmt["ExamDate"]; 
      $marks["subject"] = $stmt["subject"]; 
      $marks["ExamName"] = $stmt["ExamName"]; 
      $marks["Marks"] = $stmt["Marks"]; 
      $marks["TotalMarks"] = $stmt["TotalMarks"]; 
      $marks["PassingMarks"] = $stmt["PassingMarks"]; 


      $total = array(); 
      $total["Marks"] = $stmt["Marks"]; 
      $total["TotalMarks"] = $stmt["TotalMarks"]; 
      $total["Percentage"] = $stmt["Percentage"]; 

      $exam = array(); 
      $exam["ExamName"] = $stmt["ExamName"]; 

      } 




      // success 
      $result["success"] = 1; 


      // user node 
      $result["marks"] = array(); 
      $result["total"] = array(); 
      $result["exam"] = array(); 


      array_push($result["marks"],$marks); 
      array_push($result["total"],$total); 
      array_push($result["exam"],$exam); 

      // echoing JSON response 
      echo json_encode($result); 


     } else { 
      // no product found 
      $result["success"] = 0; 
      $result["message"] = "No product found"; 

      // echo no users JSON 
      echo json_encode($result); 

     } 

     //sqlsrv_free_stmt($stmt); 
     sqlsrv_close($conn); //Close the connnection first 

    } 

画像内のエラーを与える:画像マーク・アレイ・レコードディスプレイ一

enter image description here

が、実際にそこに4記録。 3つのレコードはnullであるdisplay.inの配列のパーセント値では表示されません。

実際のResult.Inマークの配列の表示は以下のとおりです。私はMarks_masは、他のテーブルに接続するマスターテーブルであると仮定し

{"success":1,"marks":[{"std_Name":"VIVEK SANAPARA","Standard":"12-SCI-CE","Division":"A","ExamDate":{"date":"2016-10-06 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"subject":"MATHS","ExamName":"WT","Marks":"30.00","TotalMarks":"30.00","PassingMarks":"10"},{"std_Name":"VIVEK SANAPARA","Standard":"12-SCI-CE","Division":"A","ExamDate":{"date":"2016-10-07 00:00:00.000000","timezone_type":3,"timezone":"Asia\/Kolkata"},"subject":"PHYSICS","ExamName":"WT","Marks":"15.00","TotalMarks":"30.00","PassingMarks":"10"},{"std_Name":"VIVEK SANAPARA","Standard":"12-SCI-CE","Division":"A","ExamDate":{"date":"2016-10-08 00:00:00.000000","timezone_type":3,"timezone":"Asia\/Kolkata"},"subject":"PHYSICS","ExamName":"WT","Marks":"25.00","TotalMarks":"30.00","PassingMarks":"10"},{"std_Name":"VIVEK SANAPARA","Standard":"12-SCI-CE","Division":"A","ExamDate":{"date":"2016-11-22 00:00:00.000000","timezone_type":3,"timezone":"Asia\/Kolkata"},"subject":"PHYSICS","ExamName":"WT","Marks":"25.00","TotalMarks":"30.00","PassingMarks":"10"},],"total":[{"Marks":"30.00","TotalMarks":"30.00","Percentage":"79.166600"}],"exam":[{"ExamName":"WT"}]} 
+2

複数のSELECT文を1つのクエリで実行し、別々に値を取得することを期待しています。 1つのselectステートメントにすることができない限り、それらを個々のクエリに分割してみてください。 –

+0

私はそれを試してみました。私に例を与える – raj

答えて

0

使用が参加左:

私はこの結果を必要としています。

$sql = "select b.std_Name,d.Standard,e.Division,a.ExamDate,f.subject,a.ExamName,a.Marks,a.TotalMarks,a.PassingMarks 
           from Marks_mas a LEFT join std_reg b on a.regno=b.regno 
           LEFT JOIN Subject_mas as f ON a.Subject_ID = f.Subject_ID 
           LEFT join StandardMaster d on a.standard = d.STDID 
           LEFT join DivisionMaster e on a.Division = e.DivisionID 
           where a.RegNo= '$reg' order by a.ExamDate; select sum(a.Marks) as Marks,sum(a.TotalMarks) as TotalMarks, (sum(a.Marks)/sum(a.TotalMarks) * 100) as Percentage 
           from Marks_mas a 
           where a.RegNo= '$reg'; select distinct ExamName From Marks_mas;";