尽管订购了MySQL

时间:2015-06-19 12:47:09

标签: php mysql

我的数据库集中有两个字段,其唯一键的约束。我需要让这两个字段唯一,因为我正在使用它来确定是否要插入副本而只是更新字段。 这是插入/更新它们的查询:

INSERT INTO quiz(player1, player2, array, email1, email2) 
VALUES (:user1, :user2, :quests, :email1, :email2) 
ON DUPLICATE KEY UPDATE player1=:user1, player2=:user2, array=:quests, email1=:email1, email2=:email2"

唯一字段为player1player2

这样可以正常工作,但它会计算值插入player1player2字段的顺序。因此我希望将值插入player1,player2 - >例如user1user2user2user1相同。是否可以在数据库中进行设置 - 或者我是否需要在PHP中使用其他功能进行更新?

1 个答案:

答案 0 :(得分:0)

我多次遇到这种情况,简短的回答是我认为你必须添加一些PHP代码来检查user2,user1记录在插入user1,user2记录之前是否已经存在。

或者,您可以考虑将DB更改为以下内容:

Matches Table
 id
 created_at
 updated_at

Participants Table
 id
 user_id
 match_id
 created_at
 updated_at

Users table
 id
 username
 email
 etc...

Quiz Table
 id
 match_id
 etc...

起初看起来似乎更多,但事实证明,从长远来看,它更容易使用,因为如果您计划进行更高级的查询,它可以让您更轻松地查询数据。然后,您可以对user_id和match_id执行唯一索引。如果你需要的只是快速而又脏的,那就按照你已有的方式进行操作,然后添加一些PHP验证。如果您希望从长远来看正确完成并计划进行更高级的查询,则应考虑更改表结构。