我是论坛的新手,需要一些帮助来为我的团结游戏做一个功能。我试图将播放器的进度保存在一个mysql数据库中,如下所示:
userid level stars
29 1 2
29 2 1
45 1 3
50 1 2
50 2 3
50 3 1
29 3 3
因此脚本在游戏开始时发送用户注册提供的用户标识。并且对于他完成的每个级别,脚本发送级别的数量,以及级别中收集的星星数量。
问题和问题是,我如何在php脚本和mysql数据库中配置这个只保存一次信息?因为如果身份证50的玩家玩第一级,会添加一条信息,但如果同一玩家再次玩第一级并改变星星数量,我不想换新行,只需更新星号金额
我看一下INDEX,UNIQUE,PRIMARY,FULLTEXT,SPATIAL函数但是没弄明白什么是正确的组合以及如何放入php脚本,并在论坛中查看其他问题但没有像此
感谢您的帮助!
答案 0 :(得分:0)
我建议您使用http://redis.io/(内存数据结构存储,用作数据库,缓存和消息代理)来保存游戏进度。
答案 1 :(得分:0)
首先,您需要组合上的唯一索引(userid,level),然后如果组合存在则需要更新,否则需要插入。
有关如何创建唯一索引,请查看How do I specify unique constraint for multiple columns in MySQL?
有关如何编写SQL查询以进行更新/插入,请查看SQL: If Exists Update Else Insert
上面的文章使用Microsoft SQL语法。在PHP中,您可以通过发出查询然后使用mysql_affected_rows来查看受影响的行数来对此进行编码。如果0行受影响,则从PHP发出INSERT查询。
答案 2 :(得分:0)
在伪代码中你需要在SQL中做这样的事情。
UPDATE $ table set column = value WHERE id = $ ID
答案 3 :(得分:0)
嗨brayan实际上问题是没有人会为你编写代码,你必须自己做。我猜你没有意识到SQL,即你问过
我如何在php脚本和mysql数据库中配置这个来保存 信息只有一次?因为如果身份证50的玩家玩了 第一级,将添加一行信息,但如果相同 玩家再次玩第一级并改变星星的数量,我 不想要换行,只需更新星号。
无论如何,您首先需要对Unity的SQL和PHP有一些基本的了解。我将向您推荐unityWiki的本指南Server_Side_Highscores,它可以帮助您使用PHP进行数据库和服务器逻辑交互。 现在是你的第二个重要部分。
每个级别完成后您必须更新用户代码。或者您只需向用户询问有关社交保存的信息。 在将新记录插入数据库之前,您必须检查是否存在具有级别ID的userId。像这样的事情
Select userid, level, stars
from youTableName
where userid = ?
and level = ?
如果上面的查询返回空响应,则只需添加记录
INSERT INTO table_name (userid, level, stars)
VALUES (value1,value2,value3);
否则您必须更新该特定列。