为什么在查询执行时只更新/删除表的最后一行?

时间:2014-12-12 09:11:21

标签: php mysql

这对我来说是个谜!哈哈。为什么这样,我执行查询时只更新/删除了表格的最后一行?代码正在运行,只是这样,只能修改最后/最近的记录。我之前遇到过这个问题,第二天我重新启动电脑就修好了[好吧,我不知道它是怎么回事哈哈]。现在它再次成为我的问题。

有人可以帮我解决这个问题,请...

这是我的 AdminPAevaluation.php 页面:

这是 HTML 部分:               

<?php
$selectquery="select * from tbl_annualevaluation;";
$selectrs=mysqli_query($con,$selectquery) or die ("Cannot execute query.");
$selectrows=mysqli_fetch_array($selectrs);
?>
<tr>
<th>DESCRIPTION</th>
<th>GRADE (%)</th>
<th>SALARY APPRAISAL (%)</th>
<th>UPDATE
</th>
<th>DELETE</th>
</tr>

这是&lt; b> PHP 部分:

<?php do{ ?>

<tr>
<td><input type="text" value="<?php echo $selectrows['description'];?>" name="txtdescription" class="textbox1" /></td>
<td><input type="text" value="<?php echo $selectrows['grade'];?>" name="txtgrade" class="textbox1" /></td>
<td><input type="text" value="<?php echo $selectrows['salaryAppraisal'];?>" name="txtsalaryAppraisal" class="textbox1" /></td>
<td><input type="submit" value="UPDATE" class="button1" name="update"/></td>
<td><input type="submit" value="DELETE" class="button1" name="delete"/></td>
</tr>
<input type="hidden" value="<?php echo $selectrows['idtbl_annualevaluation'];?>" name="txtidtbl_annualevaluation" />

<?php } while($selectrows=mysqli_fetch_array($selectrs)); ?></table>
</form>
</center>
</body>
</html>

<?php
$descId=$_POST['txtidtbl_annualevaluation'];
$txtdesc=$_POST['txtdescription'];
$txtgrade=$_POST['txtgrade'];
$txtsalaryAppraisal=$_POST['txtsalaryAppraisal'];

//this is the block codes for insert
if(isset($_POST['insert'])){
    $insertdesc="insert into tbl_annualevaluation (description) values ('$_POST[new]');";
    $insertdescrs=mysqli_query($con,$insertdesc) or mysqli_error();
    header("location:AdminPAevaluation.php");
}

//this is the block codes for delete.   
if(isset($_POST['delete'])){

这一部分,我认为我的代码在这里是正确的,名字也正确放置,所以我不知道为什么它没有正常工作......嗯嗯嗯

$deletedesc="delete from tbl_annualevaluation where idtbl_annualevaluation='$descId';";
$deletedescrs=mysqli_query($con,$deletedesc);
header("location:AdminPAevaluation.php");

}
if(isset($_POST['update'])){
$updatedesc="update tbl_annualevaluation set description='$txtdesc', grade='$txtgrade', salaryAppraisal='$txtsalaryAppraisal' where idtbl_annualevaluation='$descId';";
$updatedescrs=mysqli_query($con,$updatedesc) or mysqli_error();
header("location:AdminPAevaluation.php");
}
?>

我非常确定列名,表和所有 - 都已正确/适当地指定。

1 个答案:

答案 0 :(得分:0)

因为它是同一个表单的所有部分,所以它可能只是读取最后一个隐藏的值。你忘了让循环在它开始时创建一个新表格。

<?php do{ ?>
<form action="index.php" method="POST">
<tr>
<td><input type="text" value="<?php echo $selectrows['description'];?>" name="txtdescription" class="textbox1" /></td>
<td><input type="text" value="<?php echo $selectrows['grade'];?>" name="txtgrade" class="textbox1" /></td>
<td><input type="text" value="<?php echo $selectrows['salaryAppraisal'];?>" name="txtsalaryAppraisal" class="textbox1" /></td>
<td><input type="submit" value="UPDATE" class="button1" name="update"/></td>
<td><input type="submit" value="DELETE" class="button1" name="delete"/></td>
</tr>
<input type="hidden" value="<?php echo $selectrows['idtbl_annualevaluation'];?>" name="txtidtbl_annualevaluation" />
</form>

<?php } while($selectrows=mysqli_fetch_array($selectrs)); ?></table>