21. november 2006 - 13:58Der er
15 kommentarer og 1 løsning
Insert i 3 forskellige tabellere på een gang
Er det muligt at indsætte i 3 forskellige tabeller på een gang?
Har en formular, som skal gemme de indtastede oplysninger i en database. Den skal gemme det i 3 forskellige tabeller. Den ene er en billedetabel, nummer 2 noget info og den sidste en tabel der kæder infoet og billedet sammen.
Når man trykker på submit kommer man over til filen opret.php, hvor selve indsættelsen skal finde sted, og det er her jeg har brug for hjælp:
Der er intet der i opret.php forhindrer dig i at kalde MySQL 3 gange, for at få lavet de 3 forskellige inserts.
Du kan indkapsle de 3 inserts i en transaktion, hvis det er vigtigt at alle 3 inserts sker samtidigt, eller at der ikke indsættes noget hvis det fejler. Dette forudsætter dog at du bruger InnoDB tabeller.
nej, du skal lave et BEGIN statement til at starte med, og så tilsidst lave et COMMIT statement hvis det skal gemems, eller et ROLLBACK statement hvis ændringerne skal droppes.
Ja den er jeg med på. Har bare et problem. Billed_id og info_id er primær nøgler i de to første tabeller som autogenereres. Deres værdier skal så sættes ind i tabellen har. Hvordan gøres det?
Har prøvet med GET og POST, men det virker ikke: $sql = "INSERT INTO har (billed_id, info_id) "; $sql .= "VALUES "; $sql .= " ('".$_GET['billed_id']."', '".$_GET['info_id']."')"; $result = mysql_query($sql, $conn);
zynzz: Din gør det samme som min, nemlig ingenting :(
fsconsult.dk: Kan ikke få det til at virke...
Har sat $b_id= mysql_insert_id; og $i_id= mysql_insert_id; ind efter insert og dens værdier, og så: $sql = "INSERT INTO har (billed_id, info_id) "; $sql .= "VALUES "; $sql .= " ('".$b_id."', '".$i_id."')"; $result = mysql_query($sql, $conn);
$sql="INSERT INTO billede (beskrivelse,filnavn) VALUES('x', 'y')"; mysql_query($sql, $conn); $b_id=mysql_insert_id(); $sql="INSERT INTO info (navn,adr) VALUES('z1', 'z2')"; mysql_query($sql, $conn); $i_id=mysql_insert_id(); $sql = "INSERT INTO har (billed_id, info_id) "; $sql .= "VALUES "; $sql .= " ('".$b_id."', '".$i_id."')"; $result = mysql_query($sql, $conn);
har du prøvet at tilføje for at se om den finder noget: echo "b_id=$b_id<br>\ni_id=$i_id<br>\n"; bliver der oprettet noget i billed og info tabellerne?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.