两种策略:
- 让数据库做这个任务。更改您的表,以便您希望唯一的字段实际上是唯一索引。当您要插入数据并且它是重复的时,您将收到一个错误,可用于决定下一步做什么。
ON DUPLICATE KEY
或者,如果需要,您可以使用 an来代替执行另一个表操作。
- 查询表以查明 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();
我更喜欢让数据库来完成这项工作。
更新:
根据要求,这里有两个关于如何向表中添加唯一索引的示例。SQL 如下所示:
CREATE UNIQUE INDEX your index_name
ON your_table (your_id_field);
插入数据时,如果key已经存在,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 */
}
}
当然,如果您不想在这种情况下做任何事情,则不需要所有这些错误处理。