1

我知道,如果您想防止表中的双重输入数据,您可以通过简单查询检查该值是否存在

SELECT `id` FROM TABLE WHERE `title` == 'test'

我也知道 PHP 无法在 1 个查询中处理多个 SQL 请求,例如:

SELECT `id` FROM TABLE WHERE `title` == 'test1'
SELECT `id` FROM TABLE WHERE `title` == 'test2'
SELECT `id` FROM TABLE WHERE `title` == 'test3'

因此,一个解决方案是将'test1','test2''test3'放入一个数组中,循环它并连续执行 3 次相同的查询。

但我想要完成的只是在不存在具有相同数据的另一行时才插入一行。应该有比这种方法更好的方法。

// if (!$row_exists) {
INSERT INTO table_name (a, b, c) VALUES (1, 2, 3) 
4

5 回答 5

4

为所有必要的列创建唯一索引。MySQL 不允许它们重复。

于 2013-08-01T16:45:46.860 回答
0

您还可以使用以下命令检查单个语句:

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);

然后执行插入操作。

于 2013-08-01T16:59:02.757 回答
0

UNIQUE在应该是唯一的字段上添加一个约束:

ALTER TABLE table_name ADD UNIQUE u_abc (a, b, c);

然后做一个INSERT IGNORE

INSERT IGNORE INTO table_name (a, b, c) VALUES (1, 2, 3) ;

如果违反唯一性约束(即如果记录已经存在),这将不会插入任何内容

于 2013-08-01T16:46:26.563 回答
0

Replace Into 过去对我来说很方便。希望能帮助到你

Replace Into table_name (a, b, c) VALUES (1, 2, 3);

参考: http ://dev.mysql.com/doc/refman/5.0/en/replace.html

于 2013-08-01T16:47:29.423 回答
0

SQL 有非常强大的方法来管理数组中数据的唯一性(防止重复)。我建议研究UNIQUE约束和主键的功能,看看它们是否有助于解决您的问题。

于 2013-08-01T16:47:32.743 回答