Olen tässä tullut huomanneeksi että MySQL-tietokannassa pääavainkenttä ei tallennukaan automaattisesti sille määritettyyn viiteavainkenttään toisessa taulussa. On kaksi taulua joissa molemmissa auto_increment-pääavain. Toisessa taulussa lisäksi viiteavainkenttä, johon toisen taulun pääavain olisi tarkoitus tallentaa.
Taulussa companies viiteavain on tuo userid, ensin kuitenki pitäisi hakea muuttujaan $ID tieto users taulun pääavaimesta user_id:sta. Tuota kyselyä en onnistu tekemään oikein. Vai onko joku viisaampi tapa suoriutua tästä?
Tämmöisillä lauseilla yritän toteuttaa ylläolevaa:
<?php
$sql = "INSERT INTO users (tunnus, salasana, level)
VALUES ('$tunnus','$salasana','$level')";
$result = query($sql);
//tähän väliin pitäisi hakea tieto muuttujaan $ID
$sql = "INSERT INTO companies (userid, name, address, zip, city)
VALUES ('$ID', '$name', '$address', '$zip', '$city')";
$result = query($sql);
if (mysql_affected_rows() > 0) {
echo "Seuraava tietue lisättiin onnistuneesti: <br>\n";
echo "'$tunnus', '$salasana', '$level', '$user_id','$name', '$address', '$zip', '$city' \n";
} else {
echo "Tietuetta EI lisätty!<br>\n";
}
?>Olisiko järkevämpää muuttaa taulujen rakennetta ja tallennusjärjestystä näin: määritellä vain users-taulun pääavain autoincrementiksi, ja antaa ylläpitäjän määritellä companies-taulun pääavaimen, esim. muotoon "SONERA", ja sitten tämä sama tieto vietäisiin users-taulun kenttään companyid. Tällöin ensin tallennettaisiin companies-tauluun ja sitten vasta users-tauluun.
Kiitokset avusta, joka tulee enemmän kuin tarpeeseen!
Mod. lisäsi kooditagit
$k = "INSERT INTO taulu SET tieto"; if(!($t = mysql_query($k))) return; $lisattyId = mysql_insert_id(); $k2 = "INSERT INTO taulu (id,....) VALUES('lisattyId'...)
jos oikein ymmärsin ongelmasi. Eli tallennetaan toiseen tauluun viimeisimmän autoincerent arvon saanut id jne..
Voi olla kirjoitusvirheitä :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.