php - 根据刚刚插入的多个值生成字符串

标签 php mysql

这个可能有点复杂。我搜索了类似的问题,但没有发现任何相关的内容。

让我从建立数据库结构开始。

我有几个表,但相关的如下: Master Table

Card Table

Deck Table

现在,我将牌组列表存储为以逗号分隔的 cardid 字符串。我意识到这是低效的,当我开始改进我的代码时,我将创建一个新表 tcg_card_in_deck ,其中包含 relationidcardiddecid。现在我的代码假设一个 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,并使 masteriduserid 成为复合键。然后,添加名为 quantity 的行。由于您无法以任何有意义的方式区分一张卡的两个副本(除了箔片,您可以使用此模式处理),因此不需要每张卡都获得自己的 ID。

大概您没有动态输入新的 tcg_master 行,因此您不必担心将其 ID 拉回。

关于php - 根据刚刚插入的多个值生成字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18052361/

相关文章:

php - 使用PHP备份MySQL数据

java - 无法在 thymeleaf 中显示 byte[] 图像

PHP如何加引号?

mysql - 如何使用 ORDER BY RAND() 优化此 SQL 查询

php - 使用连接在 php 中执行 sql 查询

php - PHP 5.5.x 中弃用的 MySQL 扩展

PHP Reward 指向排行榜并占领带

mysql - 从数组返回随机的mysql函数?

php - PDO、多语句和竞争条件

php - 将参数从 PHP 传递到远程 shell 脚本