Ich habe Daten von Ms SQL Server 2008 holen. Ich habe drei Abfrage ausführen in einer Zeit und eine Anweisung auszuführen. First Query ist Student Detail und Marks, Second Query ist Gesamtmarkierungen und Prozent, Third Query ist Exam Name.PHP - while Loop-Problem
Ich habe Problem ist, dass While-Schleife nur einen Datensatz anzeigen, aber tatsächlich gibt es vier Datensätze. Drei Datensätze werden nicht angezeigt. Prozentwertanzeige ist null.
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
}
Geben Sie Fehler in Bild:
In Bildmarkierungen Array Satzanzeige ein, aber eigentlich gibt vier Rekord. Drei Datensätze werden nicht angezeigt. Gesamtarray Prozentwert ist null.
Geben Sie unten das tatsächliche Ergebnis an. In den Feldern Array-Anzeige Vier Datensatz und Gesamt-Array geben Prozentwert an.
Ich habe dieses Ergebnis benötigen:
{"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"}]}
Sie versuchen, mehrere SELECT-Anweisungen in einer Abfrage auszuführen und erwarten dann, die Werte separat zurück zu erhalten. Versuchen Sie, sie in einzelne Abfragen aufzuteilen - es sei denn, Sie können sie in 1 select-Anweisung setzen. –
ich wurde es versucht. gib mir ein Beispiel – raj