INSERT Query 2 tabellen 1 waarde
Ik heb 2 tabellen, Route en Status; deze hebben beide een Statuscode.
Nu moet ik d.m.v een insert variabelen toevoegen aan BEIDE tabellen, maar de Statuscode moet uniek zijn; maar toch gelijk aan elkaar.
Dus Route en Status moeten dezelfde statuscode hebben (relatie met foreign key)
Maar aangezien mijn tabellen gebruik maken van MyISAM, hoe moet ik dit dan oplossen?
Dus dan heb ik uiteindelijk:
Route Status
Statuscode 3 Statuscode 3
Deze moeten altijd gelijk zijn. En i kkan deze niet van te voren defineren als variabele aangezien het een primary key is.
Heeft niets met MyISAM maar eerder met je datamodel. Het kan best primary key zijn maar niet in beide tabellen. Je kan de eerste inserten, opvragen (SELECT) en dan als foreign key in de tweede tabel inserten. Je kan je key ook op een andere manier genereren (dus zonder autoincrement werken).
Is het niet mogelijk om d.m.v subqueries alles toe te voegen?
Toevoeging op 31/03/2011 13:29:06:
Okay, ik heb de Code opgelost door eerst de status toe te voegen en dan de Max op te vragen, aangezien Statuscode steeds 1 op hoogt. Maar.. ik krijg een foutmelding doordat ik:
Quote:
if (!$statusqry OR !$routeqry) {
die('Het toevoegen aan de database is mislukt ' . mysql_error()); }
else { echo 'Route toegevoegd met de status: "'.$status.'"'; }
die('Het toevoegen aan de database is mislukt ' . mysql_error()); }
else { echo 'Route toegevoegd met de status: "'.$status.'"'; }
Maar er wordt geen Mysql Error gegeven, dus ik heb geen idee wat er nou mis gaat.
Dit is de code:
Quote:
$statusqry = mysql_query("INSERT INTO status(Status, Inboekdatum, Actief, Inboeker) VALUES ('".$status."', NOW(), ".$actief.", '".$inboeker."')");
$test = mysql_query("SELECT MAX(Statuscode) FROM status");
$routeqry = mysql_query("INSERT INTO route(Statuscode, Datum, Inboeker, Inboekdatum) VALUES ('".$test."', '".$datum."', '".$inboeker."', NOW())");
$test = mysql_query("SELECT MAX(Statuscode) FROM status");
$routeqry = mysql_query("INSERT INTO route(Statuscode, Datum, Inboeker, Inboekdatum) VALUES ('".$test."', '".$datum."', '".$inboeker."', NOW())");
Gewijzigd op 31/03/2011 13:30:19 door Wouter Krooshof
Bump?:D
Die moet je natuurlijk wel eerst omzetten maar waarom zoveel moeite...
Je wilt beide statuscode's hetzelfde hebben dus waarom niet meteen $status nog een keer gebruiken...
Probeer dit eens:
Code (php)
1
2
3
2
3
$statusqry = mysql_query("INSERT INTO status(Status, Inboekdatum, Actief, Inboeker) VALUES ('".$status."', NOW(), ".$actief.", '".$inboeker."')");
$routeqry = mysql_query("INSERT INTO route(Statuscode, Datum, Inboeker, Inboekdatum) VALUES ('".$status."', '".$datum."', '".$inboeker."', NOW())");
$routeqry = mysql_query("INSERT INTO route(Statuscode, Datum, Inboeker, Inboekdatum) VALUES ('".$status."', '".$datum."', '".$inboeker."', NOW())");