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

在文本上使用带有唯一键的 INSERT IGNORE。

INSERT IGNORE INTO fruit (text) VALUES ('$text')
于 2013-06-20T07:38:08.123 回答
1

另一种方法是使用:

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

将插入新的和旧的,删除并再次插入:)
但是在文本字段上添加唯一索引是最好的方法:D

于 2013-06-20T07:41:44.850 回答
0

几种方式:

  • 您必须先执行选择并比较结果,然后在未找到记录时进行插入
  • 向您的数据库字段添加唯一性,如果有数据,则不会执行插入器
  • 构造查询以在插入前检查
  • 使用插入忽略
于 2013-06-20T07:39:20.453 回答
0
for ($i = 1; $i <= 10; $i++) {
$text = "Orange";
$result = mysql_query("SELECT text FROM fruit WHERE text = '$text');
    if (mysql_num_rows($result) == 0){
        mysql_query("INSERT INTO fruit (text) VALUES ('$text')");
    }else{
       echo "Duplicate";
       break;
     }
}
于 2013-06-20T07:44:45.317 回答
0

SQL 中的大多数东西就像 MySQL 唯一索引一样,我们只学习一次。
解决你的例子,我们将在附近运行一些东西

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 回答