insert_id

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer

Dit ga je doen Tot jouw takenpakket behoort onder andere: Webapplicaties ontwerpen, bouwen, testen en implementeren in .NET/C#.; Ontwikkelen, implementeren en beheren van maatwerkapplicaties; Onderhouden en beheren van standaardpakketten; Onderzoeken en beoordelen van nieuwe technieken. Hier ga je werken Als .NET ontwikkelaar kom je te werken bij een grote semioverheidsinstelling in Nijmegen. De organisatie staat garant voor het leveren van onderwijs en les- en onderzoeksmateriaal voor duizenden betrokkenen. De organisatie wil bijdragen aan een gezonde, vrije wereld met gelijke kansen voor iedereen. Binnen de teams hangt een open en collegiale cultuur met veel aandacht voor een prettige en sociale werksfeer.

Bekijk vacature »

Front-end Developer - Juniorfunctie

Functie omschrijving Ben jij op zoek naar een uitdagende baan als front-end developer, in een informele werksfeer, waar jij echt het verschil kan maken? Wil jij graag werken voor een bedrijf dat sportiviteit en een open communicatie, hoog in het vaandel heeft staan? Dan hebben wij de perfecte vacature voor je! Voor een klein bedrijf in Rijen dat gespecialiseerd is in het omzetten van digitale woningtekeningen naar managementinformatie, zijn wij per direct op zoek naar een allround front-end developer. Jouw werkzaamheden zien er als volgt uit: Ja gaat nauw samenwerken met de back-end developer. De database structuur is volledig gebouwd

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Low Code Developer - Consultant

Functie omschrijving Wil jij fungeren als een spin in het web en samenwerken met klanten? Voor een leuke en interessante opdrachtgever in omgeving Leiden zijn wij op zoek naar een Low Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten en het leiden van projecten. Ben jij toe aan een nieuwe uitdaging en heb jij verstand van datamodellering en NO CODE Platformen? Lees dan snel verder! Bij deze rol horen de volgende werkzaamheden: Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform,

Bekijk vacature »

NodeJS developer

Functie Als Fullstack developer kom je te werken in het ontwikkelteam. Je bent samen met je collega’s continu bezig om de software uit te breiden, maar hiernaast doe je onderzoek naar de inzet van nieuwe technieken, tools of bijvoorbeeld Machine Learning. Ze willen met hun software echt voorlopen op andere en toegevoegde waarde leveren voor de eindgebruiker. Mede hierom zijn ze erg benieuwd naar iemand zijn persoonlijkheid, of hij graag nieuwe dingen uitzoekt (Google!), en initiatief neemt. Qua technische kennis zoeken ze iemand die goed op de hoogte is van de nieuwste ontwikkelingen, daar zij nu ontwikkelen op NodeJs back-end,

Bekijk vacature »

Fullstack Developer

Functieomschrijving Heb je kort geleden jouw HBO diploma ICT development behaald? Of zit je nog aan het begin van je carrière en heb je affiniteit met C#.NET? Voor een erkende werkgever in de omgeving van Oosterhout zijn wij op zoek naar een fullstack developer. Als C#.NET developer werk je samen met een vooruitstrevend team aan het ontwikkelen van maatwerk software voor klanten. Je hebt affiniteit met SQL, maar nog belangrijker is dat je kennis en ervaring hebt met C#.NET. Jouw werkzaamheden zien er als volgt uit: Het ontwikkelen van onze high-availability en high-performance backend; Je begint de dag rond 8:30

Bekijk vacature »

PHP Developer

Functie Middels Scrum en sprints bouw jij in deze functie mee aan complexe webapplicaties en ons SaaS platform. Hierbij hoort ook architectuur tot een van je taken. Daarnaast ben je één van de leden van het Scrum team. Dat betekent dat je naast je kerntaken ook in contact staat met de product owner. Oftewel, je bent bij het gehele ontwikkelproces betrokken. Tools die hierbij gebruikt worden zijn o.a. PHP, Symfony en Git. Eisen • Minimaal HBO werk- en denkniveau • Minimaal 3 jaar aantoonbare ervaring met PHP • Kennis en ervaring Symfony (Laravel is pré) & Lando • Kennis van

Bekijk vacature »

.NET Developer Microservices

Dit ga je doen Je taken zullen voornamelijk bestaan uit: Het ontwikkelen van software, inclusief vormgeving, implementaties, integraties en (automatisch) testen (.NET, C#, Azure, Docker, Microservices, Angular); Het in kaart brengen van software requirements; Zorgen dat jouw code kwalitatief hoogstaand is; Het uitvoeren van risico analyses; Een bijdrage leveren aan het continuous quality improvement process. Hier ga je werken Dat kanker een verschrikkelijke ziekte is die de wereld uit geholpen moet worden, is duidelijk. Binnen deze Gelderse organisatie die duizenden ziekenhuizen van producten voorziet, proberen ze daar via technische innovaties aan bij te dragen. Samen met 10 collega .NET developers

Bekijk vacature »

Full stack developer Python, React

Functie Jij als full stack developer komt binnen onze Technology afdeling te werken. Deze bestaat momenteel uit 15 man. De stack waarmee wij werken is voornamelijk Python, Javascript, React en GraphQL. Binnen deze afdeling wordt er met multidisciplinaire teams gewerkt aan verschillende projecten. Projecten duren vaak langer dan 3 maanden en je bent van begin tot eind vaak betrokken. Naast dat je als full stack ontwikkelaar aan de slag gaat ben je ook Consultant. Dit betekent dat je ook klantcontact hebt in je rol en werkshops geeft. De verhouding tussen deze werkzaamheden zijn ongeveer 70% development en 30% consultancy. Een

Bekijk vacature »

Als Lead PHP developer bijdragen aan het onderwijs

Functie Als Lead PHP developer zet je samen met het team en de andere lead developers de technische lijnen uit als het gaat om het ontwikkelen van de applicaties en bepaal je samen met de PO waar elke sprint aan gewerkt zal worden. Je kunt op basis van een user story een goede aanpak formuleren en een planning opstellen, en andere hierin meenemen. Wanneer je team code schrijft verwacht je degelijke oplossingen, bij voorkeur gebruik makend van Domain Driven Design. Je ziet toegevoegde waarde in het beoordelen van het werk van collega’s om zo samen te streven naar hoge kwaliteit

Bekijk vacature »

Lead Front-end developer

Functie Hun huidige applicatie worden ontwikkeld in o.a. React, Redux, TypeScript. Ze werken graag met de nieuwste technieken en tooling en zoeken ook developers die hier proactief op zoek naar gaan. Als senior/lead developer ben je een kartrekker in het team. Naast het meedenken over bijvoorbeeld de architectuur of toepassing van nieuwe technieken krijg je ook veel tijd om de meer junior (front-end) developers te begeleiden. Zo kun je bijvoorbeeld 1 dag in de week met 2 collega’s bezig zijn om samen met hen te kijken naar hun ontwikkeling, doelstellingen en uiteraard de gewenste begeleiding hierin. Hiernaast sta je als

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij recent jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een erkende werkgever in regio Waalwijk zijn wij op zoek naar een back-end developer. Kennis of ervaring met C# & SQL is een must! Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten; Je bent verantwoordelijk voor de beheer en ontwikkeling van de software; Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je brengt de aanpassingssuggesties van klanten in kaart, om ze

Bekijk vacature »

Software Developer

Bij een bedrijf in de machinebouw, regio Roosendaal, zijn we op zoek naar een: Software Developer Waar ga je werken? Onze opdrachtgever is gespecialiseerd in de grondverzetmachines. Al meer dan 50 jaar leveren ze zowel nationaal als internationaal diverse machines. Het is een familiebedrijf met een informele werksfeer. Wat ga je doen? Als Software Developer je verantwoordelijk voor: - Je werkt voortdurend aan oplossingen voor het op afstand bewaken en besturen van oogstmachines; - Het visualiseren van gegevens in rapporten, apps of andere formaten; - Voorspellend machineonderhoud; - Taakplanning; - Je schrijft aangepaste plug-ins om gegevens te importeren of exporteren

Bekijk vacature »

Front-end developer

Functie Jij komt te werken in een team van 5 developers. het product is continue in beweging. Nieuwe en bestaande klanten vragen om vaak nieuwe features. Hierin ben jij zeer belangrijk om te zorgen dat de functionaliteiten goed opgezet worden op technisch vlak. Designs krijg je aangeleverd van een externe partij zodat jij je primair kan focussen op de techniek! Je hebt daarbij alle vrijheid om je eigen creativiteit toe te passen en mee te denken over de gebruikte technieken. Het gezamenlijke doel is een product dat functioneel zeer gebruiksvriendelijk is en het bedrijfsproces van de gebruikers versneld en kwalitatief

Bekijk vacature »

Pagina: « vorige 1 2

Paul Ulje

Paul Ulje

22/09/2016 02:11:24
Quote Anchor link
Beste Bart,

Mijn onbegrip betreffende PHP is groot, dat geef ik graag toe.
Dus als jij mij kan uitleggen waarom de insert_id na een insert (IF) last zou hebben van een update code (ELSE) ergens anders ben ik weer een stap verder. Is er een geheime afspraak dat er geen tekens in de brontekst mogen staan tussen de insert en insert_id?

de testcode was:
if ($id === 9999) $p = $db->query($qInsert);
else $p = $db->query($qUpdate);
$id = $db->insert_id;
 
PHP hulp

PHP hulp

04/01/2025 23:40:55
 
Ward van der Put
Moderator

Ward van der Put

22/09/2016 09:38:18
Quote Anchor link
Misschien moeten we even terug langs af. Wat verwacht je van die id? En wat wil je met die id bereiken?
Paul Ulje op 18/09/2016 19:44:07:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$db
= openDB(); // OO-functie de db-connectie afhandelt, werkt foutloos
if  ($pid === 9999) $p = $db->query($qInsert); // zonder pid
else  $p = $db->query($qUpdate); // met de optie WHERE pid='$pid'
?>

Het hele eiereneten is dat je in de UPDATE een bestaand record bijwerkt met een bestaande en bekende id. De nieuwe, tot dan nog onbekende id heb je alleen nodig wanneer je met INSERT een nieuw record toevoegt.

Stel, je gebruikt de id voor een klantnummer. Bij het toevoegen van een nieuwe klant met INSERT krijgt die klant een nieuw klantnummer dat pas bekend is na het uitvoeren van de query. Wijzig je echter de gegevens van een bestaande klant, dan gebruik je een bestaande én bekende id in de UPDATE — en heeft de laatst toegevoegde, nieuwe id in die context geen betekenis.

Ik vermoed dat je — elders in je code — wat last hebt van code smell, bijvoorbeeld doordat je de id voor twee verschillende dingen gebruikt.
 
Ivo P

Ivo P

22/09/2016 09:46:18
Quote Anchor link
ik had nog nooit gehoord van de optie om na een update-query last_insert_id op te kunnen vragen.

Ik snap ook niet wat dat zou moeten opleveren. Google levert me alleen topics van mensen die niets terugkrijgen van deze functie en als comment krijgen dat ze ook niets inserten.
En anders niet meer dan handleidingen die weliswaar de update-query noemen als mogelijke bron voor de insert_id functie, maar niet toelichten wat je dan terug mag verwachten.

Iemand een uitleg wat insert_id zou moeten teruggegeven bij een update-query? Enige wat ik me namelijk voor zou kunnen stellen, is een trigger die bij een update afgaat en dan wat insert. Maar dan zou dat ook bij een DELETEquery moeten werken.

@Paul
Waarom zou je die id opvragen als je hem vooraf al weet?
 
Paul Ulje

Paul Ulje

22/09/2016 16:11:53
Quote Anchor link
Dit is waar het mee begon:
W3Schools zegt:
If we perform an INSERT or UPDATE on a table with an AUTO_INCREMENT field, we can get the ID of the last inserted/updated record immediately: $last_id = $conn->insert_id;

@Paul
Waarom zou je die id opvragen als je hem vooraf al weet?

Inderdaad Ivo. Ik zou het niet weten. Maar wie beweert er dan ook dat ik het id wil opvragen als ik hem al weet? Ik niet. Lees de draad en verbaas je net als ik over die vreemde aanname van sommigen.

Ik heb drie regeltjes gemaakt om de bewering van W3Schools te testen. En dan blijkt het niet te werken.
Waarom niet? Géén idee. Ook niet na de hulp van SanThe. Nou, dan haal ik die id wel op een andere manier op na een insert. Ik zie daar geen probleem in. Maar een aantal PHPers is het daar niet mee eens.
Gewijzigd op 22/09/2016 16:12:42 door Paul Ulje
 
Ward van der Put
Moderator

Ward van der Put

22/09/2016 16:22:31
Quote Anchor link
Paul Ulje op 22/09/2016 16:11:53:
Ik heb drie regeltjes gemaakt om de bewering van W3Schools te testen. En dan blijkt het niet te werken.

Dat is helaas bekend. Vandaar dat ze vaak "W3Fools" worden genoemd.
Er is zelfs een website aan besteed.

Voor beweringen die veel dichter bij de waarheid liggen, kun je beter 'RTFM' in de documentatie duiken, in dit geval bijvoorbeeld die van PDO::lastInsertId voor PHP.
 
Ivo P

Ivo P

22/09/2016 16:51:23
Quote Anchor link
echter: http://php.net/manual/en/mysqli.insert-id.php

heeft het ook over update.

"The mysqli_insert_id() function returns the ID generated by a query on a table with a column having the AUTO_INCREMENT attribute. If the last query wasn't an INSERT or UPDATE statement or if the modified table does not have a column with the AUTO_INCREMENT attribute, this function will return zero. "
 
Ward van der Put
Moderator

Ward van der Put

22/09/2016 17:26:23
Quote Anchor link
Dat is wel atypisch gedrag, want je verwacht bij een UPDATE het aantal affected rows.

Quote:
UPDATE returns the number of rows that were actually changed. The mysql_info() C API function returns the number of rows that were matched and updated and the number of warnings that occurred during the UPDATE.


Als je niets toevoegt maar meerdere records wijzigt, en je de update-volgorde dan ook nog eens kunt wijzigen met een ORDER BY, wat is dan nog de betekenis van de last_insert_id()?

De TS zou ook daarom onderhand wel moeten kunnen uitleggen wat hij nou eigenlijk concreet met die id wil doen — anders dan een voorbeeld van W3Fools weerleggen, want dat die vaak niet kloppen, wisten we al.
Gewijzigd op 22/09/2016 17:26:59 door Ward van der Put
 
Ben van Velzen

Ben van Velzen

22/09/2016 17:40:14
Quote Anchor link
Dat dacht ik dus ook, want hoe vraag je het id op van "de gewijzigde rijen?" Enkelvoud vs meervoud enzo.
Gewijzigd op 22/09/2016 17:41:16 door Ben van Velzen
 
Willem vp

Willem vp

22/09/2016 18:56:33
Quote Anchor link
Ivo P op 22/09/2016 16:51:23:
echter: http://php.net/manual/en/mysqli.insert-id.php

heeft het ook over update.

"The mysqli_insert_id() function returns the ID generated by a query on a table with a column having the AUTO_INCREMENT attribute. If the last query wasn't an INSERT or UPDATE statement or if the modified table does not have a column with the AUTO_INCREMENT attribute, this function will return zero. "

Ik gok dat dat een booboo is en dat er REPLACE wordt bedoeld in plaats van UPDATE (replace is in feite een combinatie van delete en insert).

Voor de gein ben ik eens in de sourcecode van PHP gedoken. De C-code is net iets te ingewikkeld om in een oogopslag te kunnen bepalen hoe het werkt, maar de testscripts laten duidelijk zien dat mysql(i)_insert_id() alleen wordt getest met INSERT-statements. Dat suggereert ook wel het een en ander...
 
Ben van Velzen

Ben van Velzen

22/09/2016 19:03:10
Quote Anchor link
De manual heeft het ook over UPDATE, dat klopt. Maar handleidingen kunnen ook bugs hebben ;-)
Om daar echt zeker van te zijn zou je de mysql client library moeten bekijken vermoed ik, omdat deze rechtstreeks aangeroepen wordt. De logica van MySQL kennende is dit soort gedrag mogelijk zelfs afhankelijk van de sql mode.
Gewijzigd op 22/09/2016 19:03:46 door Ben van Velzen
 
Ward van der Put
Moderator

Ward van der Put

23/09/2016 06:25:50
Quote Anchor link
Voor wie het ook eens wil testen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);

$dsn      = 'mysql:host=localhost;dbname=test';
$username = 'root';
$password = '';

$dbh = new \PDO($dsn, $username, $password);
$dbh->query("
    CREATE TABLE IF NOT EXISTS users (
      user_id     SMALLINT(5) UNSIGNED  NOT NULL  AUTO_INCREMENT,
      first_name  VARCHAR(255)          NOT NULL,
      PRIMARY KEY pk_user_id (user_id)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8  COLLATE=utf8_general_ci
"
);

// Drie records toevoegen: user_id 1, 2 en 3
$dbh->query("
    INSERT INTO users (first_name)
    VALUES ('Jan'), ('Piet'), ('Joris')
"
);

// Je zou user_id == 3 verwachten, maar dit is: string(1) "1"
var_dump($dbh->lastInsertId());

// Record 2 bijwerken
$dbh->query("
    UPDATE users
    SET first_name = 'Kees'
    WHERE user_id = 2
"
);

// We hebben niets toegevoegd: string(1) "0"
var_dump($dbh->lastInsertId());

// Nog een record toevoegen: user_id wordt 4
$dbh->query("
    INSERT INTO users (first_name)
    VALUES ('Corneel')
"
);

// Nu wel juist: string(1) "4"
var_dump($dbh->lastInsertId());

// Nog drie records toevoegen: user_id 5, 6 en 7
$dbh->query("
    INSERT INTO users (first_name)
    VALUES ('Karen'), ('Kristel'), ('Kathleen')
"
);

// Je zou user_id == 7 verwachten: string(1) "5"
var_dump($dbh->lastInsertId());
?>

Bij de eerste INSERT met id 1, 2 en 3 is lastInsertId() 1; bij de derde INSERT met id 5, 6 en 7 is lastInsertId() 5. Het lijkt er dus op dat bij een INSERT van meerdere records de eerste id (1 en 5) wordt gebruikt. En dat is niet de hoogste id (3 en 7).
Gewijzigd op 23/09/2016 07:28:28 door Ward van der Put
 
Willem vp

Willem vp

23/09/2016 08:50:28
Quote Anchor link
Ward van der Put op 23/09/2016 06:25:50:
// Drie records toevoegen: user_id 1, 2 en 3
[...]
// Je zou user_id == 3 verwachten, maar dit is: string(1) "1"

Interessant. Waarom zou je dat verwachten? ;-)

Als je het insert_id opvraagt, doe je dat met een reden. Die reden is niet omdat je het id van het volgende record wilt berekenen (dat wordt immers gegenereerd door de database) maar waarschijnlijk omdat je de inserts wilt nabewerken. En in dat geval heb je meer aan het id van het eerste ingevoegde record dan aan dat van het laatste.

In software engineering zijn drie dingen moeilijk: naamgeving en tellen. Dit is zo'n voorbeeld van naamgeving. Een functienaam als id_of_first_inserted_record_for_latest_query() is ook niet de meest handige.

Quote:
Het lijkt er dus op dat bij een INSERT van meerdere records de eerste id (1 en 5) wordt gebruikt.

Technisch gezien wordt het auto_increment-id gebruikt dat de tabel had vlak voor het eerste record werd ingevoegd. (En ja, ik heb ook de sourcecode van MySQL erbij gehaald. ;-) )
Gewijzigd op 23/09/2016 08:55:57 door Willem vp
 
Ward van der Put
Moderator

Ward van der Put

23/09/2016 09:51:23
Quote Anchor link
Willem, dank voor de toevoeging!

Dan is deze frisse blik onder de motorkap dus wat er in de documentatie ontbreekt:

Willem vp op 23/09/2016 08:50:28:
En in dat geval heb je meer aan het id van het eerste ingevoegde record dan aan dat van het laatste.
[…]
Technisch gezien wordt het auto_increment-id gebruikt dat de tabel had vlak voor het eerste record werd ingevoegd.
 

Pagina: « vorige 1 2



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.