我已经设置了一个更新查询,它将更新在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>更多推荐
发布评论