两种策略:
- 让数据库执行此任务。改变你的桌子,所以你想要独特的领域实际上是一个unique index。当你想插入数据,并且它是重复的,你会收到一个错误,可以用来决定下一步该做什么。或者,如果您想要执行另一个表操作(如果需要),则可以使用
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();
我宁愿让数据库做的工作。
更新:
根据要求在这里是如何的唯一索引添加到您的表中的两个例子。该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 */
}
}
你并不需要所有这些错误处理,如果你不想在这种情况下,当然做任何事情。
从ID匹配的数据库中选择所有,并检查返回的行数是否为0。 – luk2302
请参阅插入IGNORE – Strawberry
@Strawberry:Id不是主键。所以我不能使用INSERT IGNORE。 – Ponting