geef id als al bestaat

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Klaasjan Boven

Klaasjan Boven

08/11/2008 20:47:00
Quote Anchor link
Hoi,

Ik wil middels PDO een rij inserten (geen probleem)
echter het gegeven al bestaat wil ik het id van die rij terugkrijgen.
weet iemand of dat makkelijk mogelijk is?

Nu doe heb ik twee keuzes:
- maak veld unique, vang fout af en vraag id. Komt er geen fout dan insert en vraag id
- doe eerst een select op het veld komt er resultaat terug dan heb je het id anders inserten en id opvragen.

Beide keuzen zijn mogelijk maar ze zijn allebei veel werk.

Iemand een idee hoe dat makkelijker kan>?

Groeten
Klaasjan
 
PHP hulp

PHP hulp

05/02/2023 05:29:23
 
Joren de Wit

Joren de Wit

08/11/2008 20:52:00
Quote Anchor link
De eerste oplossing die je geeft is de betere. Als je dubbele resultaten wilt voorkomen, wil je sowieso een UNIQUE constraint gebruiken.

Als de INSERT query mislukt, vang je de foutmelding en foutcode op. Als hieruit blijkt dat het om een unique constraint violation gaat weet je dat je met een dubbel record te maken hebt. In dat geval hoef je dus enkel nog een SELECT query uit te voeren met in de WHERE de unieke waarde die je net probeerde in te voeren. Dat levert je automatisch het betreffende record.

Een veel snellere oplossing zou ik zo snel niet kunnen verzinnen...
 
Klaasjan Boven

Klaasjan Boven

08/11/2008 21:00:00
Quote Anchor link
@Blanche daar was ik al bang voor. Dat levert snel een paar honderd regels code op om een eenvoudig registratiescriptje werkend te krijgen :(
 
Joren de Wit

Joren de Wit

08/11/2008 21:03:00
Quote Anchor link
Quote:
een paar honderd regels code
Ik neem aan dat we het hier dan over meerdere INSERT queries in je code hebben? Want zo'n extra controle voor 1 query kost je hooguit enkele regels...
 
Klaasjan Boven

Klaasjan Boven

08/11/2008 21:06:00
Quote Anchor link
Yep,

Gebruikersemail // uniek
Plaats // uniek
straat // uniek
postcode // uniek
adres // unieke combi van bovenstaande drie
gebruiker_adres // combi van adres en gebruikers_id

Dit icm PDO en goede foutafhandeling levert behoorlijk wat code op
 
Joren de Wit

Joren de Wit

08/11/2008 21:13:00
Quote Anchor link
Tja, soms is het niet anders ;-)
 
Klaasjan Boven

Klaasjan Boven

08/11/2008 21:14:00
Quote Anchor link
Ja lekkere gozer ben jij zeg :)
 
Joren de Wit

Joren de Wit

08/11/2008 21:29:00
Quote Anchor link
Haha, ik wou dat het anders kon. Maar op bepaalde moment kun je een code niet verder inkorten zonder er essentiële onderdelen uit te slopen.

Heb je veel last van herhalende procedurele code, dan zou je wellicht eens een OOP aanpak kunnen overwegen. Maar dan zul je waarschijnlijk van helemaal opnieuw kunnen beginnen ;-)
 
Klaasjan Boven

Klaasjan Boven

09/11/2008 22:15:00
Quote Anchor link
Nou uiteindelijk maar alles uitgetikt 406 regels voor alleen het registratie scriptje dwz Form en de verwerking daarvan in 5 verschillende tabellen met de bijbehorende koppelingen.

Als iemand een snellere manier weet houd ik me dus nog steeds aanbevolen
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
 
Kalle P

Kalle P

10/11/2008 01:07:00
Quote Anchor link
Ga het in OOP doen en gebruikeen design pattern (strategy pattern als ik vluchtig kijk naar je lijstje). Stel er komt er een nieuw item bij maak je gewoon een nieuwe klasse pleur je aan de interface en hoppa. Je kan desnoods een veredelde versie hier van maken. Door een functie te maken die je params meegeeft. De handelingen zijn overal het zelfde. (Mmm klink meer als een builder pattern als ik zo zeg. Kortom gewoon builder pattern gebruiken). Succes
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.