簡體   English   中英

PHP PDO-在mysql中更新僅發布值(html格式)

[英]PHP PDO - Update in mysql only posted value (html form)

我有一個html表單,其中有一些禁用字段,具體取決於用戶具有哪種授權。 當我按Submit時,腳本應該了解發布的是哪個表單字段,哪些不是,然后僅更新數據庫中的相關字段。

例如:

我可以修改BirthdayBirth placesex ,但是NameSurname被禁用,因此不會通過html表單發布。 因此, BirthPlace更新BirthdayBirthPlaceSex ,其中id = $idperson 但是,如果獲得許可,我也會發布NameSurname 因此,我也應該更新這些值。

有使用PDO的快速方法嗎? 還是我必須創建較長的if / else序列?

對不起,我的英語不好

最好,最簡單的方法

  • 首先收集帖子數據並設置檢查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();
}

希望這段代碼對您有所幫助,祝您編程愉快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM