itemId(item.id) と tagId(tag.id) をマップするテーブルがあります。
新しい行を挿入する必要があるクエリを作成していますが、itemId と tagId の両方にまだエントリがない場合のみです。これを行う最善の方法は何ですか?
これは、既存の一致をまだチェックしていない現在のクエリです。
// create tag-item maps
$sql = 'INSERT INTO item_tag
SELECT :itemId AS iid, tag.id AS tid
FROM tag
WHERE tag.name=:name';
try{
$stmt = $db->dbh->prepare($sql);
for($i = 0; $i < $count; $i++) {
$data = array(':itemId' => $itemId, ':name' => $tags[$i]);
$result = $stmt->execute($data);
if($result !== false) {
// Do nothing
}else {
return false;
}
}
return true;
}catch(PDOException $e) {
logit($e->getMessage());
return false;
}