我试图插入新数据当且仅当数据不存在于数据库中时,如果它存在,只需打破插入操作并采取下一项并尝试再次检查并插入,我想要类似的东西这样:
insert into db if field_id doesnot exist, if exist, dont touch anything, neither update nor anything
ON DUPLICATE KEY UPDATE
不是我想要的,INSERT IGNORE
现在对我来说似乎很神秘
这是我的尝试:
$check = "SELECT anzeige_id FROM table WHERE anzeige_id = '$whatIhaveInMyHand'";
$checked=mysql_query($check);
if(mysql_num_rows($checked)==0){
$sql = "INSERT INTO table (`firmen_id`,`anzeige_id`,`anzeige_txt`) VALUES ('$firma_id','$anzeigen_id','$anzeige_txt')";
$sql_inserted = mysql_query($sql);
if($sql_inserted){
echo "inserted into db <br/>";
}else{
echo "anzeige_id already exists ".$anzeigen_id."<br/>";
}
对我的计划有什么好处?
答案 0 :(得分:2)
您必须首先阅读,然后插入,否则您必须信任INSERT IGNORE
,这将有效地忽略任何插入会导致UNIQUE / PRIMARY键违规的行。
答案 1 :(得分:1)
如果数据集不是PRIMARY KEY并且使用INSERT IGNORE,则在您用于标识数据集的字段上设置UNIQUE约束。这将导致插入新数据集并且无法以静默方式插入旧数据集。
答案 2 :(得分:0)
设置计数器并阅读所有记录:
if(counter>0) {
record available
}