只插入MySQL记录,如果恰好一个不存在

时间:2015-02-23 11:14:37

标签: php 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行但不适用于多行。我怎样才能在我的函数中实现它?

2 个答案:

答案 0 :(得分:1)

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

希望这有帮助

答案 1 :(得分:0)

我认为你的意思是列而不是行“(除了id之外的所有行)”?如果这是我,我将使用存在逻辑测试的storedprocedure来查找具有这些值的记录是否存在。如果记录存在,则不做任何其他添加记录。