如果数据库中存在数据,如何防止将数据插入数据库
例如:我有数据
for ($i = 1; $i <= 10; $i++) {
$text = "Orange";
mysql_query("INSERT INTO fruit (text) VALUES ('$text')");
}
我希望将文本“橙色”插入一次到“水果”表中
,如果再次有文本“橙色”,则它不会插入到“水果”表中
,因为数据存在并且之前已插入
将列设为唯一键...
这将防止重复
参考:
主键和唯一键约束
在文本上使用带有唯一键的 INSERT IGNORE。
INSERT IGNORE INTO fruit (text) VALUES ('$text')
另一种方法是使用:
REPLACE INTO fruit (text) VALUES ('$text')
将插入新的和旧的,删除并再次插入:)
但是在文本字段上添加唯一索引是最好的方法:D
几种方式:
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;
}
}
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 值。 [...]