insert into ( naar 2 tabellen tegelijk)
Een reserveringsform van een restaurant heb ik prima werkend en de resultaten komen per mail binnen en een gedeelte ook in een database van de nieuwsbrief, indien aangevinkt.
Maar met het uitbreiden.veranderen van de nieuwsbrief loop ik tegen een probleem aan, de gegevens moeten worden opgeslagen in 2 tabellen.
Tabel members ( een aantal velden en id_member uniek) is geen probleem.
Maar tegelijkertijd moet een 2e tabel (member_group)ook gevuld worden met de waarde id en group.
Tot zover nog steeds geen probleem.
Het punt is dat de 2e tabel (member_group) dezelfde id waarde moet hebben als de tabel members.
Zodat bij het versturen van de nieuwsbrief elk ingeschreven lid ook de groep heeft.
De tabel member_group kan dus meerdere, gelijke id's hebben verdeeld over meer dan 1 groep.
Hopelijk is het duidelijk ;-)
gr Hans
Gewijzigd op 12/11/2013 17:46:05 door Hans v es
bv.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
mysql_query("INSERT INTO users (username) values ('John')");
$id = mysql_insert_id(); // leest de id van de laatst toegevoegde record
mysql_query("INSERT INTO member_group (user_id, group_name) values (" . $id .", 'De Zeveraars')");
?>
mysql_query("INSERT INTO users (username) values ('John')");
$id = mysql_insert_id(); // leest de id van de laatst toegevoegde record
mysql_query("INSERT INTO member_group (user_id, group_name) values (" . $id .", 'De Zeveraars')");
?>
Grote dank, Hans
Wat Kris doet is correct, ook al zullen sommige mensen zeggen 'dat kan toch korter'. Kris leest eerst het id uit in een variabele en gebruikt die variabele in de volgende query. De reden waarom dit goed is heeft voornamelijk te maken met de situaties waarin je die waarde meerdere keren wilt gaan gebruiken voor meerdere inserts. Als je in die insert namelijk ook een auto increment kolom hebt, dan krijg je bij de tweede insert het id van de eerst insert en dus niet meer van de users insert. Verstandig is dus om altijd maar 1 keer uit te lezen en de waarde vanuit de variabele te gebruiken.
Wanneer je werkelijk alleen de usergroupnaam nodig hebt zou ik zelfs overwegen om die in de members tabel op te nemen.
Geen dubbele inserts, geen gezeur met zoeken.