仅在 MySQL 条记录不存在时才插入
Only insert MySQL record if that exact one doesn't allready exist
也许只有我一个人,但我找不到我在其他地方遇到的确切问题的答案。我有一个函数可以像这样在我的数据库中插入一条记录:
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 行,但没有发现它如何适用于多行。如何在我的函数中实现它?
$query = "INSERT IGNORE INTO opdrachten_deelnemers (`opdracht_id`,`bedrijf_id`,`deelnemer_id`,`flag`) VALUES (:opdracht_id,:bedrijf_id,:deelnemer_id,:flag)";
希望对您有所帮助
我猜你指的是列而不是行“(除 id 之外的所有行)”?如果这是我,我会使用一个包含逻辑测试的存储过程来查找是否存在具有这些值的记录。如果记录存在,什么都不做添加记录。
也许只有我一个人,但我找不到我在其他地方遇到的确切问题的答案。我有一个函数可以像这样在我的数据库中插入一条记录:
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 行,但没有发现它如何适用于多行。如何在我的函数中实现它?
$query = "INSERT IGNORE INTO opdrachten_deelnemers (`opdracht_id`,`bedrijf_id`,`deelnemer_id`,`flag`) VALUES (:opdracht_id,:bedrijf_id,:deelnemer_id,:flag)";
希望对您有所帮助
我猜你指的是列而不是行“(除 id 之外的所有行)”?如果这是我,我会使用一个包含逻辑测试的存储过程来查找是否存在具有这些值的记录。如果记录存在,什么都不做添加记录。