Domanda

Ho tre tabelle che essenzialmente a cascata verso il basso, come:

  • topic
  • sezione (i riferimenti argomento id)
  • sottosezione (riferimenti argomento id e la sezione id)

Che cosa è il miglior metodo di scrittura dichiarazioni MySQL per creare il primo argomento / sezione / sottosezione in modo da poter afferrare del id (auto_incremented) delle righe appena creati e li usa per inserirli nella seconda due?

modifica Sto utilizzando phpbb3, so se questo fa la differenza enorme, ma io di solito utilizzare la funzione $ db-sql_query ()

È stato utile?

Soluzione

Da genitore, su tutta la linea.
Quindi è possibile utilizzare sia LAST_INSERT_ID () , o INSERT nel SELECT:

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

Questo esempio presuppone che TOPIC.topic_id, SECTION.section_id e SUBSECTION sono auto_increment, colonne chiave primaria.

Altri suggerimenti

È possibile utilizzare mysql_insert_id () per ottenere l'ultimo ID inserto. vedi riferimento per ulteriori dettagli.

Per quanto ho capito, c'è un solo modo, che è top-down.
Per aggiungere una sottosezione a una sezione, devi avere avuto una sezione già inserita.
Per aggiungere un argomento per una sottosezione, assicurarsi che si è aggiunto il comma primo.
Lungo la strada, a tenere traccia degli ultimi ID inserito (se avete appena creato è) per dare al prossimo entità su tutta la linea.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top