これは少し複雑かもしれません。同様の質問を検索しましたが、関連すると思われるものは何も見つかりませんでした。
データベース構造を確立することから始めましょう。
いくつかの表がありますが、関連するものは次のとおりです。
現在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を取得して配列にまとめることができるようにすることです(現在は文字列として入力し、コードが更新されたら別のテーブルにエントリとして入力します)。それが 1 つのエントリであれば、使用できますLAST_INSERT_ID()
。50 個の個別の挿入クエリを実行すると、反復ごとに ID を取得して配列に追加できます。しかし、1 回のクエリですべてが完了するため、デッキリストに入れる適切なカードを効果的に見つける方法がわかりません。カード テーブルに dateline フィールドを追加して取得日を指定することもできると思いますが、それはずさんなようで、ユーザーが同様の時間枠でトレードまたはブースター パックからカードを取得した場合、欠陥のある結果が生じる可能性があります。
アドバイスをいただければ幸いです。