PHP MySQL更新只更新一行

我已经设置了一个更新查询,它将更新在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>

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...