如果数据存在,则阻止将数据插入数据库

时间:2013-06-20 07:36:16

标签: php mysql database

如果数据库中存在数据

,如何防止将数据插入数据库

例如:我有数据

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

我想将文本“orange”插入“fruit”表一次 如果有文字“橙色”再次没有插入“水果”表
因为数据存在并且已经插入

之前

6 个答案:

答案 0 :(得分:3)

将列设为唯一键...
这样可以防止重复

参考文献:
Primary Key and Unique Key constraints

答案 1 :(得分:1)

在文本中使用INSERT IGNORE和唯一键。

INSERT IGNORE INTO fruit (text) VALUES ('$text')

答案 2 :(得分:1)

另一种方法是使用:

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

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

答案 3 :(得分:0)

夫妻双方:

  • 您必须执行选择First并比较结果,然后在未找到记录的情况下执行插入
  • 为数据库字段添加唯一,如果有数据
  • ,则不会执行insers
  • 在插入
  • 之前构造您的查询以进行检查
  • 使用“插入忽略”

答案 4 :(得分: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;
     }
}

答案 5 :(得分: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 doc,

  

UNIQUE索引创建一个约束,以便索引中的所有值   必须是截然不同的如果您尝试使用a添加新行,则会发生错误   与现有行匹配的键值。对于所有引擎,都是独一无二的   index允许包含NULL的列的多个NULL值。   [...]