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でない場合は、データ・セットを識別するために使用しているフィールドにUNIQUE制約を設定し、INSERTIGNOREを使用します。その結果、新しいデータセットが挿入され、古いデータセットはサイレントに挿入できなくなります。

于 2012-11-26T10:24:54.600 に答える
0

カウンターを設定し、すべてのレコードを読み取ります。

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