PHP PDO - 在mysql中更新仅发布值(html表单)

时间:2015-09-15 05:19:25

标签: php forms pdo

我有一个html表单,根据用户的授权类型,有一些禁用字段。当我按下提交时,脚本应该知道哪个表单字段被发布,哪个不发布,然后只更新数据库中的相关字段。

例如:

我可以修改<uses-permission android:name="android.permission.RECEIVE_SMS" /> BirthdayBirth place,但sexName已停用,因此不会通过html表单发布。因此,必须仅更新SurnameBirthdayBirthPlace Sex。但如果我获得了许可,我也会发布id = $idpersonName。因此我也应该更新这些价值。

使用PDO有一种快速的方法吗?或者我必须创建一个if / else的长序列?

抱歉我的英文不好

1 个答案:

答案 0 :(得分:0)

这是做到这一点的最佳而简单的方法,

  • 首先收集帖子数据并设置检查ID
  • 使用id
  • 从您的表中获取所有数据
  • 循环您的帖子数据并检查收集的详细信息
  • 如果收集的详细信息值和帖子值已更改收集的详细信息变量
  • 使用新收集的数组
  • 更新所有字段

检查以下代码以获得更多理解

function collect() {
   if(isset($_POST['id'])) {
      // validate id and get all details from table
      $details = getDetails($_POST['id']);
      foreach($_POST as $key=>$value) {
        // loop your post data and check with collected details if value changed update in collected details 
         if(array_key_exists($key, $details)) {
            $details[$key] = ($details[$key] != $_POST[$key]) ? $_POST[$Key] : $details[$key];
         }
      }
   } else {
      echo "id not found to update";
   }
}

function getDetails($id) {
   $query = "SELECT * FROM table_name WHERE id=:id";
   $stmt = $conn->prepare($query);
   $stmt->bindParam(':id', $id);
   $stmt->execute();
   return $stmt->fetch(PDO::FETCH_ASSOC);
}


function update($details) {
   $query = "UPDATE table_name SET field_1=:field_1, field_2=:field_2, all_field=:all_field WHERE id=:id";
   $stmt = $conn->prepare();
   $stmt->bindParam(':field_1', $details['field_1']);
   ...
   $stmt->bindParam(':id', $details[$id]);
   return $stmt->execute();
}

希望这段代码可以帮助你,快乐编码。