hi im a beginner on php and i just want to know if my codes is correct because when i try to update it it only saves the last value i hope some one can understand me.

    $id = ($_REQUEST['StudentNumber']);
    $result= mysql_query("SELECT NameofSiblings, Age, HEA, CivilStatus, Occupation FROM $tblname where StudentNumber='$id'");
    $child = $_REQUEST['NumberofChildren'];

    echo "<form method='post' >";

    for($n=1; $n<=$child; $n++)
    {       
    while($row=mysql_fetch_array($result))
    {
        echo "<table>
        <tr>
        <td class='siblings'><input type='text' name='sibname[]' style='width: 150px;' value=".$row['NameofSiblings']."></td>
        <td class='siblings'><input type='text' name='sibage[]' style='width: 35px;' value=".$row['Age']."></td>
        <td class='siblings'><input type='text' name='sibhea[]' style='width: 260px;' value=".$row['HEA']."></td>
        <td class='siblings'><input type='text' name='sibcs[]' style='width: 100px;' value=".$row['CivilStatus']."></td>
        <td class='siblings'><input type='text' name='siboccu[]' style='width: 100px;' value=".$row['Occupation']."></td>
        </tr>        
        </table>";
    }
}
<td><input type="hidden" name="n" value="<?php echo $child; ?>">

and this is my separate php for update

$n=intval($_POST['n']);
for($i=0;$i<$n;$i++)
{
  $sibname =$_POST['sibname'][$i];
  $sibage =$_POST['sibage'][$i];
  $sibhea =$_POST['sibhea'][$i];
  $sibcs =$_POST['sibcs'][$i];
  $siboccu =$_POST['siboccu'][$i];*/

    $query = "UPDATE $tblname SET NameofSiblings = '$sibname', Age = '$sibage', HEA = '$sibhea', CivilStatus = '$sibcs', Occupation = '$siboccu' WHERE StudentNumber='$sn' ";

    mysql_query($query);
}

Hmm I can't test it but i think it is all good, is StudentNumber unique?
If it is unique then it will update just 1 row because you have singe row with that value...

nope it is not unique and also not a primary key

what is structure of $tblname and what is primary key in that table

$tblname is where i put NameofSibling,Age... all in varchar and theres a primary key StudID but its on AUTO_INCREMENT

my suggestion is:
1. use method "GET" instead of POST to populate data from database into form.
2. give the text name according to table column. No need to name it like an array ( name='sibname[]', name='sibage[]')

ok,i've tried using get method but it wont work and i think i need the array to get the value of the loop..can someone give me an example of how to do it correctly?