gpt4 book ai didi

php - SQL 查询 - INSERT 但仅当记录尚不存在时?

转载 作者:行者123 更新时间:2023-11-29 01:11:08 25 4
gpt4 key购买 nike

所以,我正在像您一样编写 SQL 查询,并且偶然发现了一个问题。我想要做的是每次唯一用户访问某个页面时在数据库中触发查询。唯一性是通过 session_id() 完成的,因为这通常非常可靠。

我想要的是一个将一行数据插入两列的 SQL 查询,但前提是这两列的值不同。

如果用户 x 访问名为 page1 的页面,那么在数据库中,它将记录如下:

+------------+---------+
| page_name | user_id |
+------------+---------+
| page1 | x |
+------------+---------+

我将如何编写一个查询来检查表以查看插入的数据是否重复?

我当前的查询如下(这只是一个标准的插入查询):

INSERT INTO `page_views` (`page_name`, `user_id`) VALUES ('.$pageName.', \''.session_id().'\')

最佳答案

使用 INSERT IGNORE 而不是 INSERT。如果一条记录不与现有记录重复,MySQL 将照常插入它。如果记录是重复的,则 IGNORE 关键字告诉 MySQL 在不产生错误的情况下静默丢弃它。

下面的例子没有报错,同时也不会插入重复的记录。

语法很简单——只需在“INSERT”之后添加“IGNORE”,如下所示:

INSERT IGNORE INTO mytable
(pk, f1, f2)
VALUES
('abc', 1, 2);

插入多条记录当一次插入多条记录时,不能插入的将不会插入,但可以插入的将是:

INSERT IGNORE INTO mytable
(pK, f1, f2)
VALUES
('abc', 1, 2),
('def', 3, 4),
('ghi', 5, 6);

在上面的第二个示例中,如果 'abc' 和 'def' 的记录已经存在,则不会插入这两个记录,但会插入 'ghi' 的记录。

关于php - SQL 查询 - INSERT 但仅当记录尚不存在时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36766162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com