[PHP] Auto-increment sleutel van 2 tabellen gelijk krijgen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zit met een probleem:

als er in één tabel iets wordt toegevoegd, wordt in de volgende codelijn ook iets in een andere tabel toegevoegd...ze hebben allebei het veld products_id en dat veld moet dezelfde waarde krijgen in de andere tabel:

vb. als veld in tabel 1 automatisch waarde 41 krijgt, veld in tabel 2 ook.

Dit ging allemaal goed, totdat ik zelf wat gegevens heb verwijdert uit de tabel.
Als ik nu het script uitvoer en ik voeg dus in de 2 tabellen een record in, krijgt
veld van tabel 1 waarde 42 bijvoorbeeld en veld van tabel 2 waarde 53,
terwijl de vorige sleutelwaarde in beide tabellen waarde 40 is...

hoe kan ik dit oplossen??

Acties:
  • 0 Henk 'm!

Verwijderd

Je moet de query
SELECT LAST_INSERT_ID() gebruiken,

de waarde van deze functie gebruiken als id, voor insert van de tweede tabel...

[ Voor 46% gewijzigd door Verwijderd op 16-10-2003 10:05 ]


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Niet zelf getest, maar misschien door 1x bij alle twee dmv je code een ID van 42 te inserten.

_____ Edit _____________________________

Wat gamecreature zegt is sowieso een betere oplossing, ipvwat jij nu doet: 2 auto_increment velden en dan 'hopen' dat het goed gaat.

[ Voor 62% gewijzigd door OkkE op 16-10-2003 10:07 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wat gamecreature voorstelt, dan mag het sleutelveld in de 2e tabel niet "auto_increment" zin toch? Dit moet echter zo blijven, ik kan er ook niet aan doen... thx

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Je kunt in auto_increment velden gewoon handmatig een waarde invoegen, zolang deze niet bestaat is het geen probleem. Alleen of het een nette manier is? Nee. Zoals gamecreature voorsteld is wel een nettere manier, maar dan zou ik idd in de 2e tabel je ID geen sleutelveld maken.

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Is het niet gewoon netter om in een 1:1 relation in beiden tabellen een FK toe te voegen..

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • smaij
  • Registratie: November 2000
  • Laatst online: 10:44
Dit is een voorbeeld van een slechte databasestructuur. Als je de Product_ID ' s hetzelfde wil houden moet je officiel toch 1 geen increment hebben, dat betekend niet dat deze niet in de primary key mag voorkomen.
Overigens kan je ipv de query voor het opvragen van de laatst geinserte ID ook gewoon een php commando gebruiken. Zoek maar eens op www.php.net/ bij de mysql functies!

Overigens wat heeft een FK voor zin als de key's gelijk moeten blijven. Mogen dus niet afwijken... Heb je 2 verschillende Product_ID's lekker slecht dus

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
twee FKs, als in, de IDs hoeven niet hetzelfde te zijn, want de relatie wordt bepaald door de FKs. Lijkt me nogal duidelijk wat het doel van die FKs zou zijn.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ok, bedankt, ik weet dat het een slechte database structuur is, maar ik ben een extra pagina aan het aanmaken voor mijn webshop, die ik via osCommerce heb gemaakt. Ik vind over het algemeen dat de databank hier een slechte structuur heeft

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:51
Verwijderd schreef op 16 October 2003 @ 11:47:
ok, bedankt, ik weet dat het een slechte database structuur is, maar ik ben een extra pagina aan het aanmaken voor mijn webshop, die ik via osCommerce heb gemaakt. Ik vind over het algemeen dat de databank hier een slechte structuur heeft
Je datamodel is bagger, en dat besef je.... De volgende stap is dus om je datamodel te herzien, zodat het niet meer bagger is.
Dat dat een hoop werk met zich meebrengt, daar kan je niet van uit. Het zal je id toekomst uiteindelijk maar weer extra werk / gepruts besparen.
Vergelijk het met een huis dat je bouwt: je PHP applicatie is je huis, en je database is je fundering. Als je fundering niet goed is, dan kan dat nefaste gevolgen hebben voor je huis.

https://fgheysels.github.io/

Pagina: 1