0

次のように、基本的にカスケードダウンする3つのテーブルがあります。

  • トピック
  • セクション (トピック ID を参照)
  • サブセクション (トピック ID とセクション ID を参照)

最初のトピック/セクション/サブセクションを作成するmysqlステートメントを作成して、新しく作成された行のID(auto_incremented)を取得し、それらを使用して2番目の2つに挿入する最良の方法は何ですか?

編集 私はphpbb3を使用していますが、それが大きな違いを生むかどうかはわかりませんが、通常は $db-sql_query() 関数を使用します

4

3 に答える 3

1

mysql_insert_id()を使用して、最後の挿入IDを取得できます。詳細については、リファレンスを参照してください。

于 2010-11-10T04:46:50.443 に答える
1

親から、ラインを下って。
次に、SELECTでLAST_INSERT_ID()またはINSERTのいずれかを使用できます。

INSERT INTO TOPIC
  (topic_id, topic)
VALUES (DEFAULT, $topic);

INSERT INTO SECTION
  (topic_id, section)
SELECT topic_id, $section
  FROM TOPIC
 WHERE topic = $topic

INSERT INTO SUBSECTION
  (section_id, topic_id, subsection)
SELECT section_id, topic_id
  FROM SECTION 
 WHERE section = $section

この例では、、、およびがauto_incrementの主キー列であると想定してTOPIC.topic_idSECTION.section_idますSUBSECTION

于 2010-11-10T04:50:54.110 に答える
0

私が理解している限り、トップダウンという1つの方法しかありません。
セクションにサブセクションを追加するには、セクションがすでに挿入されている必要があります。
サブセクションにトピックを追加するには、最初にサブセクションを追加したことを確認してください。
途中で、最後に挿入されたID(作成したばかりの場合)を追跡して、次のエンティティに渡します。

于 2010-11-10T04:48:41.347 に答える