gpt4 book ai didi

PHP MySQL 更新仅用循环更新最后一行

转载 作者:行者123 更新时间:2023-11-29 17:33:12 25 4
gpt4 key购买 nike

我已经设置了一个更新查询,它将更新在 while 循环中输入文本字段的值。然后由于某种原因,只有循环中的最后一行数据会被更新,其余的数据将保持不变。我知道这个问题.导致最后一个属性行覆盖表单中的另一个属性行,因此更新时仅更新最后一行

代码

<?php
include'../config/connect.php';
$id = $_SESSION['agent'];

$sql = "Select * from nps where agent_id = '$id'";
$result = $cont->query($sql);

if ( $result->num_rows > 0 ){
?>
<form action="update.php" method="post">
<?php
while($row = $result->fetch_assoc()){

?>
<tr>
<td> <?php echo $row['date']; ?> </td>
<td> <?php echo $row['phone']; ?> </td>
<td> <?php echo $row['survey_date']; ?> </td>
<td> <input type="hidden" name="id" value="<?php echo $row['agent_id']; ?>"> <?php echo $row['agent_id']; ?> </td>
<td> <?php echo $row['agent_name']; ?> </td>
<td> <?php echo $row['nps_rating']; ?> </td>
<td> <?php echo $row['sats']; ?> </td>
<td> <?php echo $row['agent_satisfaction']; ?> </td>
<td> <?php echo $row['ir']; ?></td>
<td><textarea name="comment" ><?php echo $row['comment']; ?></textarea></td>

</tr>
<?php
}

};
?>
</table>
<div><input type="submit" name="submit" > </div>

</form>

更新.php 文件

<?php
session_start();
include'../config/connect.php';

$comment = $_POST['comment'];

$id = $_POST['id'];


if($_POST['submit']){
$sql = "UPDATE nps SET comment='$comment' WHERE id='$id' ";
};

if ($cont->query($sql) === true){
echo 'done';
}else{
echo 'notdone';
}

?>

最佳答案

首先,您有两个输入名称:idcomment。提交后,表单将从头到尾进行处理,这意味着 PHP 中实际处理的值将是最后的值。

您会希望这些信息是独一无二的,并且由于您的 ID 是隐藏的,因此它不太重要。我的建议是动态创建名称,例如 comment_{id} ,然后在 PHP 中使用要更新的查询,遍历所有 $_POST 值,替换键中的 comment_,并执行查询来更新值。

您也对 SQL 注入(inject)持开放态度,应该采取措施防止这种情况发生。

关于PHP MySQL 更新仅用循环更新最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50479529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com