2 つの戦略:
- データベースにこのタスクを実行させます。一意にするフィールドが実際に一意のインデックスになるように、テーブルを変更します。データを挿入しようとして、それが重複している場合は、次に何をすべきかを決定するために使用できるエラーが表示されます。または
ON DUPLICATE KEY
、必要に応じて、代わりに別のテーブル操作を実行する場合に を使用することもできます。
- テーブルにクエリを実行して、ID が既に存在するかどうかを確認します。そうでない場合は、挿入物を生成します。
例:
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$result = $mysqli->query("SELECT id FROM yourtable");
if ($result->num_rows > 0) {
/* do your insert */
}
$result->close();
データベースに仕事を任せることを好みます。
アップデート:
リクエストに応じて、一意のインデックスをテーブルに追加する方法の 2 つの例を次に示します。SQL は次のようになります。
CREATE UNIQUE INDEX your index_name
ON your_table (your_id_field);
データを挿入するとき、キーが既に存在する場合、mysql はエラーをスローします。このエラーを処理するには、次のようにします。
$SQL = 'INSERT INTO yourtable (yourfield1, yourfield2)
VALUES ( 1, "Hello")';
$result = $mysqli->query($SQL);
if (!mysqli_query($link, $SQL)) {
if(mysqli_errno($link) == 1062) {
/* duplicate ... whatever you want in this case */
}
}
もちろん、この状況で何もしたくない場合は、このエラー処理をすべて行う必要はありません。