如果数据库中存在数据
,如何防止将数据插入数据库例如:我有数据
for ($i = 1; $i <= 10; $i++) {
$text = "Orange";
mysql_query("INSERT INTO fruit (text) VALUES ('$text')");
}
我想将文本“orange”插入“fruit”表一次
如果有文字“橙色”再次没有插入“水果”表
因为数据存在并且已经插入
答案 0 :(得分:3)
将列设为唯一键...
这样可以防止重复
答案 1 :(得分:1)
在文本中使用INSERT IGNORE和唯一键。
INSERT IGNORE INTO fruit (text) VALUES ('$text')
答案 2 :(得分:1)
另一种方法是使用:
REPLACE INTO fruit (text) VALUES ('$text')
将插入新的,旧的,删除并插入:)
但是在文本字段上添加唯一索引是最好的方法:D
答案 3 :(得分:0)
夫妻双方:
答案 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值。 [...]