Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 组合唯一的MySQL表_Php_Mysql - Fatal编程技术网

Php 组合唯一的MySQL表

Php 组合唯一的MySQL表,php,mysql,Php,Mysql,所以,问题来了(可能很简单:p) 这是我的表格结构: CREATE TABLE `users_awards` ( `user_id` int(11) NOT NULL, `award_id` int(11) NOT NULL, `duplicate` int(11) NOT NULL DEFAULT '0', UNIQUE KEY `award_id` (`award_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 这是一个用户奖励系统。

所以,问题来了(可能很简单:p)

这是我的表格结构:

CREATE TABLE `users_awards` (
  `user_id` int(11) NOT NULL,
  `award_id` int(11) NOT NULL,
  `duplicate` int(11) NOT NULL DEFAULT '0',
  UNIQUE KEY `award_id` (`award_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
这是一个用户奖励系统。我不希望我的用户多次获得相同的奖励,这就是为什么我有一个“重复”字段

我尝试的查询如下(示例数据为3和2):

所以我的MySQL有点生锈,但我将
user\u id
设置为主键,
award\u id
设置为唯一键。这(某种)产生了想要的效果

当用户1获得奖励2时,它输入。如果他/她得到两次,表中只会有一行,并且将duplicate设置为1。第二,等等

当用户2获得奖励1时,它输入。如果他/她收到这两次,复制更新等

但是当用户1被授予奖励1(在用户2已经被授予奖励后),用户2(具有奖励1)的重复字段将增加,并且不会向用户1添加任何内容

抱歉,如果这有点不对劲的话。非常感谢你的帮助


Jack

您是否意识到在列的组合上可以有唯一的约束


将您的密码更改为
(用户id、奖励id)
。事实上,这应该是表的主键。然后,您的查询将按您的预期工作。

谢谢!我不知道一个独特的约束可以在多个列上。。。我想这很重要!:D我添加了这个,现在一切正常。干杯
INSERT INTO  users_awards (user_id, award_id)
VALUES ('3','2') ON DUPLICATE KEY UPDATE duplicate=duplicate+1