使用PHP确保添加到MySQL表的唯一性

时间:2010-08-14 05:39:54

标签: php sql mysql

我正在尝试创建一个跟踪数据库中一些基本用户统计信息的页面。我开始很小,试图跟踪有多少人使用什么用户代理,但我遇到了一个绊脚石。如何检查添加到表中的用户代理是否已经存在?

2 个答案:

答案 0 :(得分:3)

您可以创建存储用户代理字符串unique的列,并为您的统计信息插入执行INSERT ... ON DUPLICATE KEY UPDATE

表格:

  CREATE TABLE IF NOT EXISTS `user_agent_stats` (
  `user_agent` varchar(255) collate utf8_bin NOT NULL,
  `hits` int(21) NOT NULL default '1',
  UNIQUE KEY `user_agent` (`user_agent`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| user_agent | varchar(255) | NO   | PRI | NULL    |       | 
| hits       | int(21)      | NO   |     | NULL    |       | 
+------------+--------------+------+-----+---------+-------+

您可以使用以下查询来插入用户代理:

INSERT INTO user_agent_stats( user_agent ) VALUES('user agent string') ON DUPLICATE KEY UPDATE hits = hits+1;

多次执行上述查询给出:

+-------------------+------+
| user_agent        | hits |
+-------------------+------+
| user agent string |    6 | 
+-------------------+------+

答案 1 :(得分:1)

在将其添加到数据库之前,从您要插入用户代理字符串的表中进行SELECT。如果mysql_num_rows大于0,则您尝试添加的用户代理已存在。如果mysql_num_rows小于或等于0,则您要添加的用户代理是新的。