2

我正在尝试插入新数据,当且仅当该数据在数据库中不存在时,如果它存在,只需中断插入操作并获取下一项并尝试再次检查并插入,我想要这样的东西:

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/>";
}

什么对我的计划有好处?

4

3 回答 3

2

您必须先阅读,然后再插入,否则您必须信任INSERT IGNORE,这将有效地忽略任何插入会导致 UNIQUE/PRIMARY 键违规的行。

于 2012-11-26T10:22:28.723 回答
1

如果它还不是 PRIMARY KEY 并使用 INSERT IGNORE,则在您用于识别数据集的字段上设置一个 UNIQUE 约束。这将导致新数据集被插入,而旧数据集无法静默插入。

于 2012-11-26T10:24:54.600 回答
0

设置一个计数器并读取所有记录:

if(counter>0) {
   record available
}
于 2012-11-26T10:31:10.817 回答