我已经设置了一个更新查询,它将更新在while循环中输入到文本字段的值.这可以正常工作,直到从数据库循环多个数据.然后由于某种原因,只会更新循环中的最后一个数据,其余数据将保持不变.
<form method="post" action="update.PHP">
<?PHP
$id = $_POST["id"];
$fname = $_POST["fname"];
$lname = $_POST["lname"];
$query= "SELECT * FROM list ORDER BY id ASC" ;
$result= MysqL_query($query);
while($row = MysqL_fetch_assoc($result) ){
echo"<input type=\"hidden\" name=\"id\" value=" . $row['id'] . " />";
echo"<input type=\"text\" name=\"fname\" value=" . $row['fname'] . " />";
echo"<input type=\"text\" name=\"lname\" value=" . $row['lname'] . " />";
}
?>
<input type="submit" value="Save Changes" />
<?PHP
$sql = "UPDATE list SET fname = '{$fname}', lname = '{$lname}' WHERE id = {$id}";
$result = MysqL_query( $sql );
?>
</form>
解决方法:
这是因为如果有多个输入,则所有输入都具有相同的名称,因此PHP无法区分彼此.
如果select mySQL查询生成的行数超过1行,则需要为每个id输入一个不同的名称,每个fname输入一个不同的名称,每个lname输入一个不同的名称.
<form method="post" action="update.PHP">
<?PHP
$id = $_POST["id"];
$fname = $_POST["fname"];
$lname = $_POST["lname"];
$query= "SELECT * FROM list ORDER BY id ASC" ;
$result= MysqL_query($query);
while($row = MysqL_fetch_assoc($result) ){
echo"<input type=\"hidden\" name=\"id[]\" value=" . $row['id'] . " />";
echo"<input type=\"text\" name=\"fname[]\" value=" . $row['fname'] . " />";
echo"<input type=\"text\" name=\"lname[]\" value=" . $row['lname'] . " />";
}
?>
<input type="submit" value="Save Changes" />
<?PHP
$sql = "UPDATE list SET fname = '{$fname}', lname = '{$lname}' WHERE id = {$id}";
$result = MysqL_query( $sql );
?>
</form>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。