[mysql/PHP] Zelfde id bij invoer 2 tabellen.

Pagina: 1
Acties:

  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52
Dag heren en enkele verdwaalde dame,

Het is waarschijnlijk nogal een basic vraagje dus excuseer mijn noobheid. Stel, ik heb een database voor artikelen met 2 tabellen.

De tabel Gegevens:
code:
1
2
3
+----+-------+-----------+
| id | titel | auteur_id |
+----+-------+-----------+

en de table Teksten met daarin voor iedere pagina van het artikel een nieuwe row:
code:
1
2
3
+----+------------+---------------+--------------+
| id | artikel_id | pagina_nummer | pagina_tekst |
+----+------------+---------------+--------------+

Als ik een nieuw artikel toevoeg, wil ik dus dat op iedere rij in tabel Teksten die hoort bij dat artikel (iedere pagina dus) in de column artikel_id komt te staan wat vlak daarvoor dus in de column id in Gegevens is gekomen. En dat nummer in Gegevens wordt dus mbv auto_increment automatisch gegenereerd. Wat is nou de makkelijkste manier om dat nummer te achterhalen na het invoeren van data in Gegevens, om het vervolgens te gebruiken bij het invoeren in Teksten?

tnx! :)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 13:51

Janoz

Moderator Devschuur®

!litemod

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52
Damn, dat is het inderdaad. Ik had hem niet gezien, thnx.

:)

Verwijderd

pas dan alleen wel heel erg op met mysql_insert_id aangezien die de laatste insert pakt:

Heb je een soort van multi user web applicatie gebouwd dan is mysql_insert_id alleen goed te gebruiken als je voor de inserts een aparte database connectie laat openen (geen permanente), de insert laat doen en direct erachteraan mysql_insert_id uit laat voeren en dan de verbinding weer laat sluiten! Anders kan het theoretisch zo zijn dat je een verkeerde id door krijgt...

Heb je geen multi user applicatie dan kan het gebruikt worden zonder problemen...

Verwijderd

Op maandag 17 september 2001 21:44 schreef pinguin het volgende:
pas dan alleen wel heel erg op met mysql_insert_id aangezien die de laatste insert pakt:

Heb je een soort van multi user web applicatie gebouwd dan is mysql_insert_id alleen goed te gebruiken als je voor de inserts een aparte database connectie laat openen (geen permanente), de insert laat doen en direct erachteraan mysql_insert_id uit laat voeren en dan de verbinding weer laat sluiten! Anders kan het theoretisch zo zijn dat je een verkeerde id door krijgt...

Heb je geen multi user applicatie dan kan het gebruikt worden zonder problemen...
waar haal jij die wijsheid vandaan?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 17 september 2001 21:44 schreef pinguin het volgende:
Hij pakt de laatste insertid van de connectie die jij gebruikt.
En dus per connectie uniek (bij mijn weten en interpreteren).

Het is niet een "binnen mysql globale var".

Verwijderd

Op maandag 17 september 2001 23:26 schreef ACM het volgende:

[..]

Hij pakt de laatste insertid van de connectie die jij gebruikt.
En dus per connectie uniek (bij mijn weten en interpreteren).

Het is niet een "binnen mysql globale var".
dat dacht ik ook :)
voor de liefhebbers:
http://www.mysql.com/doc/M/i/Miscellaneous_functions.html
LAST_INSERT_ID([expr])
Returns the last automatically generated value that was inserted into an AUTO_INCREMENT column. See section 8.4.3.126 mysql_insert_id().
mysql> select LAST_INSERT_ID();
-> 195

The last ID that was generated is maintained in the server on a per-connection basis. It will not be changed by another client. It will not even be changed if you update another AUTO_INCREMENT column with a non-magic value (that is, a value that is not NULL and not 0). If you insert many rows at the same time with an insert statement, LAST_INSERT_ID() returns the value for the first inserted row. The reason for this is so that you it makes it possible to easily reproduce the same INSERT statement against some other server. If expr is given as an argument to LAST_INSERT_ID(), then the value of the argument is returned by the function, is set as the next value to be returned by LAST_INSERT_ID() and used as the next auto_increment value. This can be used to simulate sequences: First create the table:
mysql> create table sequence (id int not null);
mysql> insert into sequence values (0);

Then the table can be used to generate sequence numbers like this:
mysql> update sequence set id=LAST_INSERT_ID(id+1);

You can generate sequences without calling LAST_INSERT_ID(), but the utility of using the function this way is that the ID value is maintained in the server as the last automatically generated value. You can retrieve the new ID as you would read any normal AUTO_INCREMENT value in MySQL. For example, LAST_INSERT_ID() (without an argument) will return the new ID. The C API function mysql_insert_id() can also be used to get the value. Note that as mysql_insert_id() is only updated after INSERT and UPDATE statements, you can't use this function to retrieve the value for LAST_INSERT_ID(expr) after executing other SQL statements like SELECT or SET.
Pagina: 1