PDO transaction prepared statements

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

VB.NET developer

Functie Het development team waar jij in terecht komt bestaat uit twee ervaren software developers. De directeur/eigenaar is tevens één van deze developers. Jij werkt direct samen met jouw werkgever en kan dan ook veel kennis en ervaring bij dit bedrijf op doen. Als team zijn jullie verantwoordelijk voor de kantoorapplicatie die deze organisatie aanbied in een niche markt. Het team is op dit moment actief bezig met een migratie waarbij het eindstation eindigt in een C# .NET omgeving. Echter is een deel van de software al geschreven in C# .NET. Hierbij is gebruik gemaakt van C# .NET, CSS, HTML,

Bekijk vacature »

Junior .NET developer

Functie Wij hebben drie scrumteams. Het eerste team focust zich op het stukje hardware wat wij in huis doen. Zij maken als team o.a. gebruik van C++. De andere twee scrumteams zijn allebei bezig met data verwerking en maken hierbij in de backend gebruik van C# .NET / .NET Core. Het verschil tussen deze teams is dat één team de data verwerking doet voor de mobiele applicatie. Zij werken hierbij dus ook met Xamarin. Het andere team focust zich op de webapplicaties en maakt hierbij ook gebruik van ASP.NET MVC. Op basis van jouw ambities en kwaliteiten kijken wij samen

Bekijk vacature »

Developer (One Data)

Do you have experience with managing IT Teams in a service delivery organization? Are you keen to bring the team and our platform to a higher level? Then Nutreco has a very interesting role for you! As a One Data developer you are responsible for the management, running and functional use of our integration landscape and processes within Nutreco. Nutreco is using at this time BizTalk 2016, and Apigee for its API management, to be replaced by Azure Integration Services as of 2023. You will be part of a virtual teams of 11 people (own and outsourced) working in an

Bekijk vacature »

WordPress & Azure Developer

Dit ga je doen Zowel front- als back-end development aan de online website omgeving; Het up-to-date houden van alle WordPress-sites; Koppelingen maken tussen applicaties; Meedenken en adviseren over verbeteringen; Development door middel van WordPress, Javascript, HTML en CSS; Werken binnen Scrum/Agile team. Hier ga je werken Voor een grote overheidsinstelling in Den Haag zijn wij opzoek naar een WordPress developer, met kennis en ervaring op het gebied van Azure. De organisatie zit in een grote transitie waarbij de gehele website/online omgeving vernieuwd zal gaan worden. Binnen dit Scrum/Agile team ben je verantwoordelijk voor deze grote migratie/ombouw van de omgeving. De

Bekijk vacature »

PHP Web Developer

Functie omschrijving Voor een klein softwarebedrijf in de omgeving Roosendaal, zijn wij op zoek naar een PHP web developer met een aantal jaar werkervaring. Wil jij graag werken aan in-house software projecten voor diverse klanten? Voel jij je prettige in een klein team developers, waar jouw inbreng enorm gewaardeerd wordt? Lees dan snel verder! Jouw werkzaamheden zien er als volgt uit: Je wordt verantwoordelijk voor de ontwikkeling van diverse applicaties. Dit kan de ene keer een online platform voor aanbiedingen zijn, en de andere keer een software pakket dat gebruikt wordt om interne processen te automatiseren. Het zijn stuk voor

Bekijk vacature »

Junior/medior PHP developer Onderwijssector

Functie Momenteel zijn ze op zoek naar een developer die, veelal fullstack, mee gaat werken aan de 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

Bekijk vacature »

Typescript Developer / Cloud platform

Dit ga je doen (Door)Ontwikkelen van het cloud platform; (Door)Ontwikkelen van microservices; Bouwen van nieuwe functionaliteiten; Verbeteringen aandragen voor het cloud platform; Sparren met de business. Hier ga je werken Onze opdrachtgever, gevestigd in regio Eindhoven, levert een compleet dienstenpakket op het gebied van IT. Zij pakken verschillende (complexe) vraagstukken van grote organisaties op. De sfeer intern is gezellig en informeel. Men houdt van hard werken maar gezelligheid door middel van een borrel of gezamenlijke lunch komt er veel voor. Als Typescript ontwikkelaar word je onderdeel van het team gericht op de (door)ontwikkeling van hun eigen cloud platform welke wordt

Bekijk vacature »

Back End Developer

As a Back End developer at KUBUS you will be developing the (web) application and services of BIMcollab. You have a focus on the back end of our software, for which we mainly work with C# and .NET. We use a full-stack approach, which means that in addition to the back-end, you will also help with other parts of the code. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact

Bekijk vacature »

Junior Front end developer

Functie Als Front end developer binnen onze organisatie ga jij je bezig houden met het bouwen van de user experience van de webapplicaties. Je bent verantwoordelijk voor het vertalen van concepten, briefings en designs naar werkende functionaliteit. Hierbij zorg je ervoor dat applicaties betrouwbaar, veilig en toekomstbestendig zijn en een goede architectuur hebben en behouden. Verder denk je actief na- en mee over nieuwe ontwikkelingen en functionaliteiten om zo elke dag de klantervaring weer te verbeteren. Dit doe je natuurlijk niet alleen maar in een development team. Het team bedraagt momenteel 4 man bestaande uit 2 devops engineers en 2

Bekijk vacature »

Softwareontwikkelaar Cleopatra

Functieomschrijving Voor de gemeente Amsterdam zijn wij op zoek naar een softwareontwikkelaar Cleopatra. De directie Verkeer en Openbare ruimte van de gemeente Amsterdam beschikt over een softwareapplicatie, "Cleopatra", waarmee geautomatiseerde handhaving plaatsvindt (op basis van kentekenherkenning) van bepaalde gebieden waarin toegangseisen worden gesteld aan het verkeer. Voorbeelden ervan zijn de milieuzones, de zone zwaar verkeer, handhaving van brom- en snorfietser op het fietspad en autoluwe gebieden. Voor de doorontwikkeling en uitbreiding ervan zijn gespecialiseerde softwareontwikkelaars nodig die helpen bij het programmeren van de handhavingsmodules voor nieuwe gebieden en het verbeteren en bijwerken van de bestaande onderdelen van de softwareapplicatie. Functie

Bekijk vacature »

Software Ontwikkelaar C# .NET

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 Amersfoort 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. Bedrijfsprofiel De organisatie waar je voor gaat werken heeft een onafhankelijk dataplatform ontwikkelt voor de agrarische sector.

Bekijk vacature »

Medior .NET developer

Functie Jij gaat als Medior .NET ontwikkelaar aan de slag in ons scrumteam met 6 developers die gepassioneerd en actief bezig zijn om onze spelers kwalitatieve en mooie spelervaringen aan te bieden. Als medior .NET developer ga jij werken aan een technisch hoogwaardig platform welke bezoekerspieken verwerkt van tienduizenden tot honderdduizenden gebruikers per minuut! Ons scrumteam werkt in drie wekelijkse sprints en wij beginnen iedere ochtend met een stand-up. Jij werkt bij ons met C# .NET, .NET Core, React.JS, Xamarin, Azure, Docker en Kubernetes. Wij hechten enorm veel waarde aan het leveren van hoogwaardige en kwalitatieve code. Zodra jij de

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »

Android developer

De functie Schiphol is een plek om te reizen, te verblijven en te werken. Door middel van data en technologie richten we op al deze gebieden het leef- en werkklimaat optimaal in en zorgen we voor een slimmere en efficiëntere operatie. Wij ontwikkelen nieuwe producten en diensten vanuit de wensen en behoeften van onze klanten, voorspellen passagier flows en testen digitale oplossingen om rijen en andere pijnpunten in het proces te verminderen. Met slimme feedback van sensortechnologie maken we zelfs data van toiletten en stoelen inzichtelijk en bruikbaar. Het Commercial Platform bestaat uit multidisciplinaire teams met een end-2-end verantwoordelijkheid voor

Bekijk vacature »

UX Writer (m/v/d)

UX Writer (m/v/d) Everything we do, starts with you. Together with you, we build the most human-centric fintech. We have the ambition to create the next. And - with Bertelsmann - a strong foundation to start from. Let’s make it new – for society and for yourself. Wij zijn op zoek naar een UX Writer (m/v/d) Fulltime - Op ons kantoor in Amsterdam of Heerenveen / deels vanuit huis Als UX Writer bij Riverty hou jij je bezig met onze strategie om daar te zijn waar onze gebruikers zijn en op de manier waarop zij ons nodig hebben, terwijl wij

Bekijk vacature »

Pagina: 1 2 volgende »

Michael -

Michael -

23/04/2014 13:33:57
Quote Anchor link
Allen,

Op de bekende zoekmachine kom ik genoeg voorbeelden tegen van prepared statements i.c.m. transactions.
Maar toch werkt bij mij de rollback niet. Een exception op de 2e tabel, terwijl de 1e wel is toegevoegd.

Kan iemand mij uitleggen wat er fout gaat? Dit is de eerste keer dat ik transactions wil gebruiken.

Ingekort voorbeeld:
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
<?php
try
{
    $db->beginTransaction();

    $sql = "
    INSERT
        INTO "
. TABLE_PREFIX . "profile
        (
            naam
        )
        VALUES
        (
            :naam
        )
    "
;
    
    $stmt = $db->prepare($sql);
    
    $stmt->bindParam(':naam', $_POST['gegevens']['naam'], PDO::PARAM_STR);

    $stmt->execute();
    
    $profile_id = $db->lastInsertId();
    
    $sql = "
    INSERT
        INTO "
. TABLE_PREFIX . "application
        (
            profile_id
        )
        VALUES
        (
            :profile_id
        )
    "
;
    
    $stmt = $db->prepare($sql);
    
    $stmt->bindParam(':profile_id', $profile_id, PDO::PARAM_INT);

    $stmt->execute();
    
    $db->commit();
}

catch(PDOException $e)
{

    if(isset($db))
    {

        $db->rollBack();
    }
}

?>


Bvd
 
PHP hulp

PHP hulp

07/05/2024 11:45:53
 
Erwin H

Erwin H

23/04/2014 14:41:53
Quote Anchor link
Welke storage engine gebruik je? Niet elke storage engine ondersteunt transactions (MyISAM, de standard, in elk geval niet).
 
Michael -

Michael -

23/04/2014 14:48:05
Quote Anchor link
Dat verander ik eigenlijk nooit, dus standaard MyISAM.
Dan kan ik lang blijven zoeken als het daarop niet werkt.

Welke raad je wel aan te gebruiken?

Ik heb de volgende keuzes
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
<select name="new_tbl_type">
    <option value="MRG_MYISAM" title="Collection of identical MyISAM tables">
        MRG_MYISAM
    </option>
    <option value="BLACKHOLE" title="/dev/null storage engine (anything you write to it disappears)">
        BLACKHOLE
    </option>
    <option value="CSV" title="CSV storage engine">
        CSV
    </option>
    <option value="MEMORY" title="Hash based, stored in memory, useful for temporary tables">
        MEMORY
    </option>
    <option value="ARCHIVE" title="Archive storage engine">
        ARCHIVE
    </option>
    <option value="MyISAM" title="Default engine as of MySQL 3.23 with great performance" selected="selected">
        MyISAM
    </option>
</select>
Gewijzigd op 23/04/2014 14:49:04 door Michael -
 
Erwin H

Erwin H

23/04/2014 15:14:50
Quote Anchor link
Uhm.... dan heb je denk ik geen enkele engine die transactions ondersteunt. InnoDB is de meeste gebruikte die het ondersteunt (en die meestal wel geinstalleerd is), maar die zie ik er ook niet tussen staan.

Hier een lijstje met engines van Wikipedia: http://en.wikipedia.org/wiki/Comparison_of_MySQL_database_engines
 
Michael -

Michael -

23/04/2014 15:23:41
Quote Anchor link
Ik kan me InnoDB wel herinneren, maar zie hem er nu inderdaad niet (meer) tussen staan.
Misschien eens contact opnemen met m'n hosting of hun wat voor me willen/kunnen doen.

Bedankt voor je reactie in ieder geval. Ik weet nu in ieder geval waar het probleem ligt.

Toevoeging op 23/04/2014 15:51:54:

Ik krijg als antwoord van de support om de 'MariaDB database (BETA)' te gebruiken die wel InnoDB ondersteund.
Wat vinden jullie van MariaDB en is het verschil met MySQL erg groot?
 
Erwin H

Erwin H

23/04/2014 16:03:05
Quote Anchor link
Geen ervaring mee, maar een snelle blik op de Wikipedia pagina ( http://en.wikipedia.org/wiki/MariaDB ) leert dat het wel goed zou moeten zitten. Ontwikkeld door hetzelfde team als dat MySQL heeft ontwikkeld. Ik kan alleen zo snel niet vinden welke php mogelijkheden er zijn, maar iets zegt me dat je gewoon PDO moet kunnen gebruiken.
Gewijzigd op 23/04/2014 16:03:24 door Erwin H
 
Michael -

Michael -

23/04/2014 16:11:50
Quote Anchor link
Blijkbaar is het een kopie, maar vanuit daar verder ontwikkelt. Dus is het eigenlijk MySQL maar met extra functies.
Ik ga morgen verder kijken hoe ik kan overschakelen.
Quote:
The goal for Maria-DB is to be a drop-in replacement for MySQL – with more features and better performance.

MariaDB is based on the corresponding version of MySQL, if one exists. For example, MariaDB 5.1.53 is based on MySQL 5.1.53, with some added bug fixes, additional storage engines, new features, and performance improvements. Versions of MariaDB that do not have an equivalently numbered version of MySQL (e.g., MariaDB 5.2.4) contain major new features the developers felt warranted a new version number. When comparing the two here, I’ll focus on the additional features of MariaDB.

bron
 
Ozzie PHP

Ozzie PHP

23/04/2014 16:31:04
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

23/04/2014 18:28:34
Quote Anchor link
Ik vind het wel typisch dat een hosting adviseert om MariaDb te gaan gebruiken omdat de MySQL versie die zij draaien geen InnoDB engine heeft. Welke versie is dat?
 
Ward van der Put
Moderator

Ward van der Put

23/04/2014 19:08:36
Quote Anchor link
Waar Ger nog aardig "typisch" schrijft, zou ik "verontrustend" invullen.
 
Michael -

Michael -

23/04/2014 20:09:08
Quote Anchor link
Ozzie, bedankt. Dat maakt in ieder geval duidelijk dat je om mariadb te gebruiken niks hoeft aan te passen. Dus heb er zeker wat aan.

Ger & Ward, ja bijzonder is t wel. Ik weet ook niet hoeveel werk het voor hun is om InnoDB op MySQL te installeren? Ze kunnen vast niet aan alle gebruikerswensen gehoor geven.

Ger, Welke versie MySQL? Waar kan ik dat vinden? In phpinfo() staat 'MySQL Client API version 5.5.35' en in phpmyadmin staat 'MySQL-client versie: 5.1.72'.

Edit:

Voor de MySQL is het versie 5.1.73
Voor MariaDB is de MySQL versie 5.5.36


Toevoeging op 23/04/2014 20:33:23:

Ik heb zojuist een database aangemaakt in MariaDB er hier de tabellen in geïnstalleerd.
Standaard staat deze engine wel op InnoDB en de rollback werkt! :)
Gewijzigd op 23/04/2014 20:15:26 door Michael -
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

23/04/2014 21:21:54
Quote Anchor link
Volgens mij kan je in PMA (ik gebruik dat bij voorkeur niet) boven aan de pagina zien welke server versie gebruikt wordt van MySQL
Voor een zichzelf respecterende hosting provider zou dat op zijn minst 5.5 moeten zijn
Gewijzigd op 23/04/2014 21:31:10 door Ger van Steenderen
 
Ward van der Put
Moderator

Ward van der Put

24/04/2014 07:27:02
Quote Anchor link
Je kunt de MySQL-versie ook controleren met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT VERSION();

Om de engines te tonen gebruik je:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SHOW ENGINES;

Ger van Steenderen op 23/04/2014 21:21:54:
Volgens mij kan je in PMA (ik gebruik dat bij voorkeur niet) boven aan de pagina zien welke server versie gebruikt wordt van MySQL
Voor een zichzelf respecterende hosting provider zou dat op zijn minst 5.5 moeten zijn

Inderdaad, en als dat minimaal MySQL 5.5 is, dan wordt het alleen nog vreemder: vanaf versie 5.5 is InnoDB namelijk de standaard engine...
 
Michael -

Michael -

24/04/2014 09:26:03
Quote Anchor link
Ik had in een eerdere post al de versies en engines genoemd.
MySQL heeft versie 5.1.73
MariaDB heeft MySQL versie 5.5.36 (Standaard InnoDB inderdaad).
 
Reshad F

Reshad F

24/04/2014 09:42:06
Quote Anchor link
Hoe heb je MyISAM altijd gebruikt dan i.c.m. relaties? :o
 
Ward van der Put
Moderator

Ward van der Put

24/04/2014 09:51:44
Quote Anchor link
Michael, kom je er nu uit met de prepared statements? Of heb je nog wat hulp nodig?

Ik zou zelf twee kleinigheden veranderen:

• de transactie pas starten na het klaarzetten van de prepared statement, dus voor de eerste execute();

• van het tweede prepared statement een gewone query maken, want je gebruikt hier de last insert ID rechtstreeks uit de database.
 
Michael -

Michael -

24/04/2014 10:05:49
Quote Anchor link
>> Hoe heb je MyISAM altijd gebruikt dan i.c.m. relaties? :o
Wat bedoel je? JOINS? Dat werkt gewoon.

Ward, Ja de rollback werkt nu.
Dus regel 4 kan beter op regel 21.
Waarom is de tweede niet goed dan? (en dus ook de 3e,4e,5e,6e..) Ik zou wel graag de prepared statements behouden i.v.m. security.
 
Ward van der Put
Moderator

Ward van der Put

24/04/2014 10:26:04
Quote Anchor link
De tweede mag ook een prepared statement zijn hoor, alleen gebruik je in dit voorbeeld uitsluitend de last insert ID rechtstreeks uit de database. Er komt hier niets mogelijk kwaadaardigs van buiten naar binnen, dus voegt een prepared statement weinig toe.

Aangezien de database pas bij de execute() daadwerkelijk wordt gewijzigd, kun je het starten van de transactie uitstellen totdat alle voorbereidingen afgerond zijn (dus het "prepared" van een prepared statement rond is). Schematisch is dat zoiets:

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
<?php
$stmt_one
   = $dbh->prepare('...');
$stmt_two   = $dbh->prepare('...');
$stmt_three = $dbh->prepare('...');

$stmt_one->bindParam('...');
$stmt_two->bindParam('...');
$stmt_three->bindParam('...');

$dbh->beginTransaction();

try {

    $stmt_one->execute();
    $stmt_two->execute();
    $stmt_three->execute();

    $dbh->commit();

}
catch (PDOException $e) {

    $dbh->rollBack();

}

?>


Uiteraard kun je ook in het eerste deel nog foutafhandeling toevoegen, alleen hoeft de rollBack() eigenlijk de drie keer execute() terug te rollen.
 
Michael -

Michael -

24/04/2014 10:50:39
Quote Anchor link
Bedankt voor de uitleg!
Wat doe je nu met de last insert id dan? Dat laat je niet zien. Wanneer is die beschikbaar en kan ik die toevoegen in de tabellen.

Zoals ik het nu heb wordt er al een id aangemaakt, auto_increment, en vervolgens weer verwijdert.
Wat ik dus krijg als er een fout in de 2e,3e,4e... tabel zit, dat alles wordt terug gedraaid, en ik weer wat toevoeg, dat hij dan een id overslaat. Heb je dat met jouw voorbeeld nog steeds?
Op zich vind het niet heel erg, dan kan ik ook zien wanneer er wat fout is gegaan, maar vroeg het me af.
 
Ward van der Put
Moderator

Ward van der Put

24/04/2014 10:59:09
Quote Anchor link
>> Wat doe je nu met de last insert id dan?

Daarvoor moet je dan wel een extra query of prepared statement tussenvoegen. Je krijgt dan inderdaad een andere volgorde dan mijn (algemene) voorbeeld, want de last insert ID is pas na het uitvoeren van de voorafgaande prepared statement bekend.
 
Michael -

Michael -

24/04/2014 11:09:06
Quote Anchor link
Mweh... dan kan ik jouw voorbeeld dus al niet toepassen.
Hoe doe je dat zelf dan om tabellen te koppelen? Ik moet toch weten welke bij welke horen. Dat kan ik niet achteraf nog gaan uitzoeken lijkt me.

Maakt ie in jouw voorbeeld wel een id aan en verwijdert deze weer? Dus de a_i verhoogt met 1?
In onderstaande zou dat sowieso wel weer gebeuren.

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
<?php
$stmt_one
   = $dbh->prepare('...');
$stmt_one->bindParam('...');
$stmt_one->execute();
$profile_id = $dbh->lastInsertId();

$stmt_two   = $dbh->prepare('...');
$stmt_three = $dbh->prepare('...');

$stmt_two->bindParam(':profile_id', $profile_id, PDO::PARAM_INT);
$stmt_three->bindParam(':profile_id', $profile_id, PDO::PARAM_INT);

$dbh->beginTransaction();

try {
    $stmt_two->execute();
    $stmt_three->execute();

    $dbh->commit();

}
catch (PDOException $e) {

    $dbh->rollBack();

}

?>
 

Pagina: 1 2 volgende »



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.