INSERT in meerdere tabellen in 1 query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dirk

Dirk

16/08/2007 20:34:00
Quote Anchor link
Hallo,
Mijn database heeft een aantal tabellen:
- klantgegevens
- locatie
- werkervaring

Mensen kunnen zich online inschrijven voor een soort vacaturebank. Ze vullen in 1 formulier hun gegevens in, op welke locaties ze willen werken, en wat hun werkervaring is. Nu wil ik dit niet in 1 tabel stoppen, aangezien mensen wellicht op meerdere locaties willen werken, en vaak ook meerdere banen hebben gehad. Het punt is dat alles in 1 formulier staat, maar dat ik dus in 1 query gegevens in meerdere tabellen in moet voeren. Kan dit? Of zie ik iets over het hoofd?
 
PHP hulp

PHP hulp

19/11/2024 19:27:56
 
Daan

Daan

16/08/2007 20:43:00
Quote Anchor link
Je kunt toch ook meerdere queries uitvoeren, één voor elke tabel?
 
Dirk

Dirk

16/08/2007 21:12:00
Quote Anchor link
De hele rimbam staat in 1 formulier, volgens mij kan ik dan geen meerdere queries achter elkaar zetten?
 
Daan

Daan

16/08/2007 21:26:00
Quote Anchor link
Dan zet je toch in het bestand waar het naartoe gepost wordt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    mysql_query("INSERT into Table1 ...");
    mysql_query("INSERT into Table2 ...");
?>


Of zie ik dat verkeerd?
 
Leroy

leroy

16/08/2007 21:31:00
Quote Anchor link
kan ook anders :
volgens mysql handleiding kan in je in een regel meerdere query's zetten vmd semi-colon : punt-komma
 
Daan

Daan

16/08/2007 21:36:00
Quote Anchor link
Jah kan ook.
dan wordt het:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    mysql_query("INSERT into Table1 ...; INSERT into Table 2");
?>


@Leroy: Het is dmv en niet vmd (en staat voor: Door Middel Van)
 
Dirk

Dirk

16/08/2007 21:44:00
Quote Anchor link
Hij doet het hoor, bedankt!
Gewijzigd op 01/01/1970 01:00:00 door Dirk
 
Frank -

Frank -

17/08/2007 21:55:00
Quote Anchor link
Let op: Wanneer er een verband zit tussen de gegevens, dan ben je bijna verplicht om de queries op een veilige manier in een TRANSACTION te verwerken. In het geval van MySQL ben je dan automatisch verplicht om de innoDB-engine te gebruiken, dat is de enige engine waarmee je TRANSACTIONs en foreignkey's kunt gebruiken.

Wanneer je geen transaction gebruikt, loop je het risico dat de data corrupt raakt wanneer er ergens een query fout gaat. Je moet dan de hele serie queries ongedaan maken of juist niet COMMIT-ten. Zie de handleiding voor de details.
 
Arjan Kapteijn

Arjan Kapteijn

17/08/2007 22:00:00
Quote Anchor link
Klinkt ook een beetje als een fout datamodel als ik dit zo lees... Ik zou eerder zoiets maken;

- Persoon
- Plaatsen
- Banen
- koppeltabel (id, persoonid, plaatsid)
- koppeltabel (id, persoonid, baanid) (o.i.d.)
 
Frank -

Frank -

17/08/2007 22:06:00
Quote Anchor link
@Arjan: Had daar niet naar gekeken, maar je hebt hier wel een heel goed punt te pakken!
Quote:
Nu wil ik dit niet in 1 tabel stoppen, aangezien mensen wellicht op meerdere locaties willen werken, en vaak ook meerdere banen hebben gehad.
Dit heeft namelijk helemaal niets met 'willen' te maken, je kunt het niet in 1 tabel opslaan! Althans, niet als je de data ook nog op een eenvoudige manier weer ter beschikking wilt hebben...

De bekende oplossing:
1) Gooi de huidige database weg
2) Ga normaliseren
3) Maak een nieuwe database aan
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.