这个可能有点复杂。我搜索了类似的问题,但没有发现任何相关的内容。
让我从建立数据库结构开始。
我有几个表,但相关的如下:
现在,我将牌组列表存储为以逗号分隔的 cardid
字符串。我意识到这是低效的,当我开始改进我的代码时,我将创建一个新表 tcg_card_in_deck
,其中包含 relationid
、cardid
、decid
。现在我的代码假设一个 decklist
字符串。
我正在构建一个允许购买套牌的功能。为了给他们实际的卡片,我有以下查询(用 PHP 生成,实际上大约有 50 个条目):
$db->query_write("INSERT INTO
`tcg_card`
(masterid, userid, foil)
VALUES
('159', '15', '0'),
('209', '15', '0'),
('209', '15', '0'),
('318', '15', '0')");
这部分很简单。我现在的问题是确保刚刚添加的卡片可以抓取它们的 id 并将其放在一个数组中(当前作为字符串输入,一旦更新代码就作为单独表中的条目输入)。如果这是一个条目,我可以使用LAST_INSERT_ID()
。如果我执行 50 个单独的插入查询,我可以在每次迭代时获取 id 并将它们添加到数组中。但因为这一切都是通过一个查询完成的,所以我不知道如何有效地找到正确的牌放入牌组列表中。我想我可以在卡片表中添加一个日期线字段来指定获取日期,但这似乎很草率,并且如果用户在类似的时间范围内从交易或补充包中获得卡片,则可能会产生有缺陷的结果。
如有任何建议,我们将不胜感激!
最佳答案
通过删除 cardid
更改 tcg_card
,并使 masterid
和 userid
成为复合键。然后,添加名为 quantity
的行。由于您无法以任何有意义的方式区分一张卡的两个副本(除了箔片,您可以使用此模式处理),因此不需要每张卡都获得自己的 ID。
大概您没有动态输入新的 tcg_master
行,因此您不必担心将其 ID 拉回。
关于php - 根据刚刚插入的多个值生成字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18052361/