insert_id

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior .NET Software Developer

Dit ga je doen Software development met behulp van C# .NET en / of PHP, je mag zelf kiezen waar jij je in wil specialiseren Meedenken over het nieuwe pakket, waar moet het aan voldoen? Unit-, integratie- en diverse andere tests schrijven en uitvoeren Nauw samenwerken met je IT collega's zoals Testers, Developers, DevOps Specialisten en Architecten Jezelf ontwikkelen met behulp van trainingen en cursussen Hier ga je werken Onze klant, een grote speler in de medische sector, is op zoek naar een enthousiaste junior (of meer ervaren) Software Developer die klaar is voor een nieuwe stap in zijn of

Bekijk vacature »

Software Developer

Dit ga je doen Je bent verantwoordelijk voor de warehouse applicatie die een integratie heeft met de PLC laag; Je ontwikkelt in C#/.Net; Je werkt mee aan de migratie naar .NET 6; Je bent verantwoordelijk voor het ontwikkelen van interfaces en het visualiseren van componenten; Je denkt mee over het design voor business oplossingen; Je bent verantwoordelijk voor het testen van de gebouwde oplossing. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Software Developer. Zij zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van

Bekijk vacature »

Medior C# Developer

Samen met het development team zorg je ervoor dat alle systemen achter de schermen vlekkeloos werken. Wat doe je als Medior C# Developer bij Coolblue? Als C# developer doe je regelmatig mee aan brainstormsessies over user experience, data en task flow met de UX Designer, Product Owner en Data Scientist in je team. Daarnaast schrijf je op zichzelf staande, consistente en testbare code die goed onderhoudbaar en toekomstbestendig is. Ook C# Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Werken met verschillende soorten data-opslag, zoals Oracle of AWS. Problemen oplossen

Bekijk vacature »

Lead developer

Functie Als lead developer wordt jij verantwoordelijk voor een van onze development teams. Samen met de Software Architect bewaak jij de kwaliteit en uitvoering van onze complexe vraagstukken. Daarnaast ben jij verantwoordelijk voor het inschatten, designen en ontwikkelen van middelgrote tot grote veranderingen in de software. Ook coördineer jij het proces rondom complexe technische vraagstukken. Verder bestaat jouw takenpakket uit het volgende: – Het aansturen van jouw development team; – Het begeleiden van Junior Software Engineers; – Het maken van technische analyses m.b.t. nieuwe aanvragen en het tijdsbestek inschatten voor de uitvoering hiervan; – Het uitvoeren van de ontwikkeling van

Bekijk vacature »

Als PHP developer bijdragen aan beter onderwijs?

Functie Momenteel zijn ze op zoek naar een PHP developer die mee gaat werken aan de (door)ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js en

Bekijk vacature »

Junior .NET Developer

Dit ga je doen Ontwikkelprocessen verder optimaliseren en verder ontwikkelen met C#; CI/CD-pipelines automatiseren; Ontwikkelen van herbruikbare componenten; Front-end pagina's gebruiksvriendelijk maken. Hier ga je werken Als junior .NET Developer kom je terecht binnen een grote en internationale organisatie. Zij streven naar een positieve impact op de mens, milieu en maatschappij. Het bedrijf is oorspronkelijk een familiebedrijf en werkt aan de productie van hoogwaardige en technische systemen voor de gezondheidszorg. Momenteel willen zij betere ontwikkelprocessen creëren op internationaal gebied en staat kwaliteit en veiligheid voor hun op nummer 1! Als junior .NET Developer werk je aan het ontwikkelen van verbeterde

Bekijk vacature »

Java developer Zorgsysteem

Dit ga je doen Werken aan het eigen gebouwde zorgsysteem; Verbeteringen maken en toepassen binnen de applicatie; Jij gaat werken aan de Back-end van de applicatie en sporadisch werk je mee aan de Front-end; Samenwerken met andere teams voor een optimaal resultaat; Jij kan 'clean' werken en high quality code schrijven; Jij werkt resultaatgericht. Hier ga je werken De organisatie houdt zich bezig met diverse applicaties met betrekking tot zorgregistratie. Dankzij hun systeem komt alle informatie, omtrent de zorg van een patiënt, op een overzichtelijke en toegankelijke manier samen in één systeem te staan. Op deze manier is deze informatie

Bekijk vacature »

Software developer (Python)

Functie Je komt te werken in het IT-team bestaande uit de Lead developer en 4 (medior/senior) developers. Gezamenlijk werken jullie aan de verbetering en uitbreiding van de software. Binnen het development team is er veel vrijheid en zelfstandigheid, zonder dat ze hiermee afdoen aan de kwaliteit. Zo hebben ze elke ochtend een korte stand-up (10:00 uur) en houden ze zo nu en dan pair-programming sessies. Ook is er een hele professionele ontwikkelcyclus waarbij code altijd eerst door een collega wordt getest voordat het naar deployement gaat. Je hebt in je werk oog voor kwaliteit, risico’s en het klantbelang. Communicatie met

Bekijk vacature »

Junior Software Developer C# Verhuursector Verhuur

Samengevat: Wij ontwikkelen en leveren softwaresystemen voor de logistieke sector en de verhuursector. Ben jij geschikt als Junior Software Developer? Heb je ervaring met Delphi? Vaste baan: C# Software Developer Logistiek HBO €2.500 - €3.900 Deze werkgever is een software ontwikkelaar, gericht op software voor de logistieke sector. Deze werkgever heeft eigen producten ontwikkelen en leveren ook maatwerk. Ons bedrijf kent een boeiende en inspirerende werkomgeving met een open cultuur en mogelijkheden voor je verdere ontwikkeling. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Core developer wordt jij onderdeel van ons team met drie breed ontwikkelde software engineers en een flexibele schil met zes ervaren freelancers. Jij gaat mee in de visie van onze organisatie om als IoT partner in deze branche specifieke markt “het” platform te blijven innoveren en deze ook steeds slimmer te maken. Wij hopen dan ook zeker dit in de toekomst te kunnen realiseren met bijvoorbeeld Artificial Intelligence. De architectuur van ons platform is opgemaakt uit een deel eigen protocol, een interface laag en een laag welke de protocollen van derde partijen vertaald naar het eigen

Bekijk vacature »

Senior Full Stack developer

Bedrijfsomschrijving tbd Functieomschrijving Full Stack Java Development bij Randstad Groep Nederland (HQ) Er is een vacature in het Corporate Client Solutions (CCS) team. Dit team is met een ander team net begonnen aan het project ‘Grip op Inhuur’. Het doel van dit project is de tevredenheid van onze leveranciers te verhogen en de efficiëntie van onze administratie te verbeteren. Onderdeel daarvan is een ‘Mijn-omgeving’ voor ZZP’ers en leveranciers. Naast dit nieuwe project werkt het team ook aan het onderhoud en verbeteren van een digitaal vacature management systeem waarmee dagelijks vele vacatures worden voorzien. Het team ontwikkelt zo veel mogelijk zelf

Bekijk vacature »

C# .NET Software Ontwikkelaar

Functie omschrijving C# .NET Developer gezocht. Ben jij een full stack developer die op zoek is naar een nieuwe uitdaging binnen een leuk snel groeiend bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Developer met ervaring op het gebied van .NET die een organisatie in de regio Arnhem gaat versterken. Jij gaat je binnen dit bedrijf vooral bezighouden met het verbeteren van de functionaliteiten van hun dataplatform. Samen met andere ontwikkelaars denk je mee in oplossingsrichtingen, architectuur en nieuwe technologieën. Als C# .NET Developer binnen dit bedrijf houd je je niet alleen bezig met het verbeteren van

Bekijk vacature »

Junior Software Developer (HBO / WO)

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer! Sta jij aan het begin van je carrière en heb je net je HBO of WO-diploma in de richting van ICT of Techniek mogen ontvangen? En heb jij grote affiniteit met software development? Dan hebben wij bij Jelling IT Professionals de perfecte opdrachtgever in de omgeving van Utrecht, die jou tot een volwaardig Fullstack Software Developer gaat opleiden. Binnen deze grote organisatie krijg je ruime en professionele trainingen die jouw in korte tijd vakbekwaam maken. Niet alleen het aan technisch aspect, maar ook zeker jouw persoonlijke ontwikkeling wordt veel

Bekijk vacature »

C#.NET Developer

Functieomschrijving Voor een software ontwikkelaar in de omgeving van Vught zijn we op zoek naar een gemotiveerde C# ontwikkelaar. Deel jij hun passie voor development en dan vooral in C#.NET? Dan kan dit wel eens jouw droombaan zijn! Jouw werkzaamheden zullen er ongeveer als volgt uit gaan zien Door de wensen van de klant goed te begrijpen ga jij aan de slag dit om te zetten naar passende oplossingen en werk je deze uit tot een sterk eindproduct. Je gaat je bezighouden met de ontwikkeling van webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Frameworks en C#.

Bekijk vacature »

(Junior) Back-end Ontwikkelaar

Functie omschrijving We are looking for a dutch native speaker Altijd al willen werken bij een organisatie, die maatwerk applicaties bouwt, die echt impact hebben in de maatschappij? Dit is je kans. Voor een kleine organisatie in de regio van Eindhoven ben ik op zoek naar een C# Ontwikkelaar. Jij gaat aan de slag met de ontwikkeling van maatwerk software en applicaties. Deze organisatie werkt voor grote organisaties in Nederland, maar ook voor het MKB. De projecten waar je aan gaat werken zijn erg divers, waardoor je werk uitdagend blijft en je erg veel kan leren. Verder ga je aan

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

28/03/2024 18:12:14
 
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.