2015-02-23 65 views
0

也許這只是我,但我無法找到我在其他地方遇到的確切問題的答案。我有一個功能,插入我的數據庫中的記錄是這樣的:只有插入MySQL記錄,如果確切的不存在

function createOpdrachtInstance($opdracht, $bedrijf, $deelnemer) { 
    $db = dbConnection(); 
    $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
      $query = "INSERT INTO opdrachten_deelnemers (`opdracht_id`,`bedrijf_id`,`deelnemer_id`,`flag`) VALUES (:opdracht_id,:bedrijf_id,:deelnemer_id,:flag)"; 
      $q = $db->prepare($query); 
      $q->execute(array(':opdracht_id'=>$opdracht, 
           ':bedrijf_id'=>$bedrijf, 
           ':deelnemer_id'=>$deelnemer, 
           ':flag'=>0)); 
} 

工作正常。但是,如果存在完全相同的記錄(除ID之外的所有行),則不應插入它。我發現這是如何工作的1行,但不是如何工作的多行。我如何在我的功能中實現這一點?

回答

1
$query = "INSERT IGNORE INTO opdrachten_deelnemers (`opdracht_id`,`bedrijf_id`,`deelnemer_id`,`flag`) VALUES (:opdracht_id,:bedrijf_id,:deelnemer_id,:flag)"; 

希望這有助於

+0

感謝您的回答。但這似乎並不奏效。 – aardnoot 2015-02-23 11:24:23

+0

您還需要所有4列的unqiue索引。 – Mihai 2015-02-23 11:29:32

+0

三者的組合應該是獨一無二的。這似乎使得另一條記錄不能存在另一條記錄中存在的任何值。 – aardnoot 2015-02-23 11:41:02

0

我相信你的意思列,而不是行 「(除ID的所有行)」?如果這是我,我會使用一個存儲過程,其中有邏輯測試,以查找是否存在具有這些值的記錄。如果該記錄存​​在,則不要做任何其他添加記錄。