首页 > 解决方案 > 用不同的值更新一个数据库表列

问题描述

我想用最大三个值和最小两个值更新表。如何更新表。我从表单中获取值,三个学生有三个字段。现在,当我在数据库中更新它们时,它们都具有相同的值。现在我正在尝试这个为什么。不知道它是否有效 查看我的页面这是我从数据库中获取值然后想要更新的表单,共有三个学生姓名字段(在 html 表单中具有不同的名称和 id,但在后端它们存储在一个表列中)

$s1_name=$_POST['s1_name'];
$s2_name=$_POST['s2_name'];
$s3_name=$_POST['s3_name'];

$query="update students SET Name=:Name
WHERE ProjectID='$id'
";

try
{

 $stmt = $conn->prepare( $query );  
 $stmt->bindParam(':Name', $s1_name);
 $stmt->bindParam(':Name', $s2_name);
 $stmt->bindParam(':Name', $s3_name);
 $result = $stmt->execute();
 $msg = "Record updated";
 }

 catch(PDOException $ex)
 {
  $msg = $ex -> getMessage();
 }

 } 

标签: phpmysql

解决方案


它不能以这种方式工作。您这样做的方式将导致查询仅将其更新为$s3_name.

您必须为每个查询执行 try/catch 语句:

<?php

$names = [$_POST['s1_name'], $_POST['s2_name'], $_POST['s3_name']];
$query = "update students SET Name=:Name WHERE ProjectID='$id'";


foreach ($names as $name) {
    try
    {
        $stmt = $conn->prepare($query);  
        $stmt->bindParam(':Name', $name);
        $result = $stmt->execute();
        $msg = "Record updated";
    }
    catch(PDOException $ex)
    {  
       $msg = $ex -> getMessage();
    }
}

推荐阅读