2015-11-18 25 views
1

我有5個輸入和一個html表。我需要檢查html表格中的複選框,因此我需要遍歷表格並獲取數據。 5個輸入和html表中的數據是相關的,所以如果其中一個insert語句失敗,這將是一個問題。如果插入語句之一失敗,我如何從數據庫中刪除數據

到目前爲止驗證輸入和檢查html表複選框正在工作,但如果我的插入語句之一失敗呢?話雖如此,我需要刪除插入的數據,如果一個失敗。

這是我的網站結構:

  1. 驗證輸入
  2. 遍歷HTML表,其中複選框被選中
  3. AJAX代碼在這裏呼籲insert
  4. if聲明這裏查看如果複選框被選中
  5. if yes然後
    - > AJAX代碼在這裏
    - >通話另一insert聲明
    else - >沒有數據需要保存,因爲投入和HTML表值需要彼此

UPDATE:

如果即時通訊將使用交易如何應用它?在我的網站 即時通訊使用兩個不同的PHP文件插入。一個在循環中。和一個用於5個輸入 這是我的代碼

var checkedItems = $('#dataTable input[type="checkbox"]:checked').each(function() { 
     $.ajax({ 
        type: "POST", 
        url: "insertdocumentsignatory.php", 
        data: ({dtnum: tnum, dsignum: signum}) 
       }) 
       .done(function (msg) { 
        alert("Data Saved: " + msg); 
       }) 
     .fail(function() { 
      alert("Posting failed."); 
     }); 
     }); 
    }); 
    if (!checkedItems.size()) { 
     alert ("Nothing checked"); 
     return; 
    }else if (checkedItems.size()) { 

     $.ajax({ 
        type: "POST", 
        url: "insertdocument.php", 
        data: ({dtnum: tnum, ddoctitle: doctitle, ddoctype: doctype, ddoccontent: doccontent, ddocdatefilled: docdatefilled}) 
       }) 
       .done(function (msg) { 
        alert("Data Saved: " + msg); 
       }) 
     .fail(function() { 
      alert("Posting failed."); 
     }); 
    } 

回答

2

您可以在交易寫插入查詢。如果任何插入失敗,則可以回滾。

2

您應該使用PDO交易。樣本交易如下:

<?php 
    $pdo->beginTransaction(); 
    $checkbox = 1; // suppose checkbox is checked 
    if($checkbox) { 
     $insert = $pdo->prepare("INSERT INTO anytable (anyrow) VALUES (?)"); 
     $insert->bindValue(1, "anyvalue"); 
     $insert->execute(); 
     if($insert->rowCount() > 0) { 
      $insert2 = $pdo->prepare("INSERT INTO anytable2 (anyrow2) VALUES (?)"); 
      $insert2->bindValue(1, "anyvalue2"); 
      $insert2->execute(); 
      if($insert2->rowCount() > 0) { 
       $pdo->commit(); 
      } else { 
       $pdo->rollBack(); 
      } 
     } else { 
      $pdo->rollBack(); 
     } 
    } 
?> 

手冊:http://php.net/manual/en/pdo.transactions.php

+0

代碼更新使用事務。我如何申請pdo交易?如果即時通訊使用兩個PHP文件,並使用Ajax調用? – knowmeifyou

2

交易將確保,無論是發生全有或全無。大多數領先的數據庫管理系統都支持事務功能。由於您使用PHP,我發現下面的鏈接,其中介紹瞭如何使用PHP + MySQL的上述

PHP + MySQL transactions examples

+0

以上代碼已更新。我如何申請pdo交易?如果即時通訊使用兩個PHP文件,並使用Ajax調用? – knowmeifyou