2016-05-03 10 views
0

こんにちは私のコード: - 私はクラスのグレードとSGPAを計算しようとしています。このコードでは他のSQLクエリの中でsqlクエリを実行するにはどうすればいいですか?次のように

$sql="SELECT student_id,DA1,DA2,DA3,DA4,DA5,DA6,HA1,HA2,HA3,HA4,HA5,HA6 from table"; 
$results = $result->query($sql); 
while($row = $results->fetch_assoc()) 
{ 
    $id = $row['student_id']; 
    $marks1 = $row['DA1'] + $row['HA1']/2 ; 
    $marks2 = $row['DA2'] + $row['HA2']/2 ; 
    $marks3 = $row['DA3'] + $row['HA3']/2 ; 
    $marks4 = $row['DA4'] + $row['HA4']/2 ; 
    $marks5 = $row['DA5'] + $row['HA5']/2 ; 
    $marks6 = $row['DA6'] + $row['HA6']/2 ; 

    $i = 1; 
    while($i <= 6) 
    { 
     $sql = "SELECT `grade`,`point` FROM `grades` where ${'marks' . $i} BETWEEN min and max"; 
     $results = $result->query($sql); 
     $row = $results->fetch_assoc(); 
     ${'grade' . $i} = $row['grade']; 
     ${'point' . $i} = $row['point']; 
     $i++; 
    } 

    $totalcredit = 20; 
    $sgpa= ($point1*$c1 + $point2*$c2 + $point3*$c3 + $point4*$c4 + $point5*$c5 + $point6*$c6)/$totalcredit ; 

    $sql = "UPDATE table SET `G1` = '$grade1', `G2` = '$grade2' ,`G3` ='$grade3',`G4` = '$grade4',`G5` = '$grade5',`G6` = '$grade6', `SGPA` = '$sgpa' WHERE student_id = '$id'"; 
    $result->query($sql); 
} 

。最初のクエリでは、すべての詳細を選択し、6人の被験者の合計マークを計算します。 2番目のクエリでは、マークに関する変数にグレードとポイントを格納してから、sgpaを計算しています。次に、データベースに詳細を格納するために更新クエリが実行されます。

テーブルは100行です。コードは最初の行で動作していますが、別の行では機能せず、空の値を返します。私は再帰的にすべての学生のデータでテーブルを計算して更新しようとしています。誰かがすべての行のコードを実行するのを助けることができれば、非常に感謝しています。このようなwhileループ

+0

これを確認してください:http://stackoverflow.com/questions/1262786/mysql-update-query-based-on-select-query –

+2

$結果を$ results2に変更してください。あなたがもう一方のものを上書きしているように見えます。 – arcee123

+0

あなたの内部WHILEは変数$ result – Webomatik

答えて

1

変更インナー: - あなたのコードの$結果で

$i = 1; 
while($i <= 6) 
{ 
    $sql = "SELECT `grade`,`point` FROM `grades` where ${'marks' . $i} BETWEEN min and max"; 
    $results2 = $result->query($sql); 
    $row = $results2->fetch_assoc(); 
    ${'grade' . $i} = $row['grade']; 
    ${'point' . $i} = $row['point']; 
    $i++; 
} 

をオーバーライドなっているが、そう$に変更する内側のループでresults2はあなたの問題を解決します。

+0

@ cmorrissey $ resultをデータベース接続オブジェクトとして変更する必要はありません。 –

+0

非常に@ Kushal Srivastavaが$結果を変更してくれてありがとう、問題を解決しました。 –

関連する問題