0

データベースにデータが存在する場合、データベースにデータを挿入しないようにする方法

例:データがあります

for ($i = 1; $i <= 10; $i++) {
    $text = "Orange";
    mysql_query("INSERT INTO fruit (text) VALUES ('$text')");
}

テキスト「オレンジ」を「フルーツ」テーブルに一度挿入し、テキスト「オレンジ」がある場合 は、データが存在し、以前に挿入されているため
、「フルーツ」テーブルに挿入されません。

4

6 に答える 6

3

列を一意のキーにする...
これにより、重複が防止され ます

参考資料:
主キーと一意キーの制約

于 2013-06-20T07:37:56.403 に答える
1

別の方法は、次を使用することです。

REPLACE INTO fruit (text) VALUES ('$text')

新しいものを挿入し、古いものを削除して再度挿入します:)
しかし、テキストフィールドに一意のインデックスを追加するのが最善の方法です:D

于 2013-06-20T07:41:44.850 に答える
1

テキストの一意のキーで INSERT IGNORE を使用します。

INSERT IGNORE INTO fruit (text) VALUES ('$text')
于 2013-06-20T07:38:08.123 に答える
0

SQL のほとんどは、MySQL Unique Indexes と同じように、1 回だけ学習します。
あなたの例を解決すると、近くで何かを実行します

CREATE  TABLE IF NOT EXISTS `stackoverflow2`.`fruit` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `text` VARCHAR(50) NOT NULL ,
  PRIMARY KEY (`id`) ,
  UNIQUE INDEX `text_UNIQUE` (`text` ASC) )
ENGINE = InnoDB;

MySQLのドキュメントから、

UNIQUE インデックスは、インデックス内のすべての値が個別でなければならないという制約を作成します。既存の行と一致するキー値を持つ新しい行を追加しようとすると、エラーが発生します。すべてのエンジンで、UNIQUE インデックスは、NULL を含むことができる列に対して複数の NULL 値を許可します。 [...]

于 2013-06-20T07:58:26.370 に答える
0

いくつかの方法:

  • 最初に選択を実行して結果を比較し、レコードが見つからない場合は挿入を行う必要があります
  • データベース フィールドに Unique を追加すると、データがある場合、insers は実行されません。
  • 挿入前にチェックするクエリを作成する
  • 挿入無視を使用
于 2013-06-20T07:39:20.453 に答える