webForumDet fria alternativet

Skriva till olika tabeller som referar till varandra samtidigt

PHP

1 svar · 375 visningar · startad av Sambaapa

Medlem sedan juli 200728 inlägg
Frågan#1

Jag har ett problem med att skicka information från ett formulär till två olika tabeller som refererar till varandra.

Vi har tabellen Produkt och tabellen erbjudande. När vi skapar ett erbjudande så skall en produkt skapas samtidigt. Kolumnen "har" i tabellen "erbjudande" refererar till kolumnen "ProdID" i tabellen "produkt".

Mitt problem ligger i att ProdID har funktionen AUTO_INCREMENT och kan därmed inte hämtas från en variabel, session, post osv utan måste hämtas från databasen. Därför måste värderna till produkt skickas före värdena till erbjudande. Jag har försökt lösa detta genom att hämta den senast tillagda produkten genom order by adte limit 1. Detta fungerade mindre bra då den nytillagda produkten tydligen inte registrerats än utan den hämtade föregående.

Finns det något sätt att lösa detta på ett smidigare sätt än det jag redan försökt. Om inte så vad gjorde jag för fel i ovanstående försök?

Tack på förhand!

Medlem sedan feb. 2007278 inlägg
#2

Beroende på den API du valt:
PDO::lastInsertId
http://se2.php.net/manual/en/function.PDO-lastInsertId.php
mysql_insert_id
http://se2.php.net/manual/en/function.mysql-insert-id.php
mysqli_insert_id
http://se2.php.net/manual/en/function.mysqli-insert-id.php

Tre operationer i en transaktion
1. INSERT INTO produkter
2. Hämta id
3. INSERT INTO erbjudanden
+ COMMIT

Transaktioner i PDO är ljuvligt lätta: http://se2.php.net/manual/en/function.PDO-beginTransaction.php

381 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
126 ms — hämta statistik (db)
133 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)