PHP MySQL更新只更新一行(PHP MySQL update only updating one row)

编程入门 行业动态 更新时间:2024-10-15 04:19:27
PHP MySQL更新只更新一行(PHP MySQL update only updating one row)

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

I have set up an update query which will update values entered into text fields on a while loop. This works fine until multiple data is being looped from the database. Then for some reason only the last data in the loop will be updated and the rest will stay the same.

<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查询生成多于一行,则需要为每个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>

This is because all of your inputs have the same name if there are more than one, so php can't differentiate from one to another.

If there is more than 1 row generated from your select mysql query, then you need to give each id input a different name, each fname input a different name, and each lname input a different name.

<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>

更多推荐

本文发布于:2023-08-01 13:29:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1359273.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:MySQL   PHP   update   row   updating

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!