這一個可能有點複雜。我搜索了類似的問題,發現沒有什麼相關的。基於剛剛插入的多個值生成字符串
讓我從建立我的數據庫結構開始。
我有幾個表,但相關的有如下:
現在我有存儲爲用逗號分隔的cardid
字符串的套牌。我意識到這是低效率的,當我開始改進我的代碼時,我將創建一個新表tcg_card_in_deck
,它有relationid
,cardid
,deckid
。現在我的代碼假設一個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並將它們添加到數組中。但是因爲這些都是通過一次查詢完成的,所以我不知道如何有效地找到正確的牌並放入牌桌。我想我可以在卡表中添加一個日期線字段來指定獲取的日期,但這似乎是sl and不馴的,如果用戶在類似的時間範圍內從交易或增強包中獲取卡牌,可能會產生有缺陷的結果。
任何意見將不勝感激!
這有點過於草率。我想確保我追蹤每張單張牌,因爲如果牌組中的牌被換掉,那麼有失敗者可以刪除副牌。 – Jared
暗示一張牌一次只能屬於一個牌組,然後呢?這實際上對用戶來說似乎是不好的(即,「如果我一次只能打一副牌,我爲什麼不能一次把這張牌放在兩個牌組裏?」)。 –
作爲進一步的更新:如果是這樣的話,那麼你現在可以創建你的'tcg_card_in_deck'表,因爲無論你提出什麼解決方案都會在表存在時被廢棄。不要浪費時間設計具有失效日期的解決方案,只需從一開始就做好。 –