geef id als al bestaat
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
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...
@Blanche daar was ik al bang voor. Dat levert snel een paar honderd regels code op om een eenvoudig registratiescriptje werkend te krijgen :(
Quote:
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...een paar honderd regels code
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
Tja, soms is het niet anders ;-)
Ja lekkere gozer ben jij zeg :)
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 ;-)
Als iemand een snellere manier weet houd ik me dus nog steeds aanbevolen
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
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