MySQLi vs PDO

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior PHP Developer

Als Senior PHP Developer bij Coolblue zorg je ervoor dat onze webshops elke dag een beetje beter zijn en coach je andere developers op de hard en soft skills. Wat doe je als Senior PHP Developer bij Coolblue? Als PHP Developer werk je met andere development teams samen om onze webshop zo optimaal mogelijk te laten werken en onze klanten blij te maken. Hoewel je een PHP Developer bent, sta je open om C# of Typescript in te zetten of te leren. Ook PHP Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om

Bekijk vacature »

Mendix Ontwikkelaar - Vernieuwen van het applicati

Bedrijfsomschrijving De ontwikkelingen in de transportsector gaan razendsnel. Bij ons kun je een belangrijke rol spelen in deze sector. We streven ernaar om onze klanten te ontzorgen op het gebied van continuïteit en veiligheid met innovatieve producten en diensten. We willen dat onze klanten de veiligste vervoerders van Europa worden. Ons team werkt hard om deze ambitieuze doelstellingen te bereiken en we bieden een motiverende werkomgeving aan. We zijn op zoek naar zelfstarters met een focus op resultaat en beslissingsbevoegdheid. Functieomschrijving Als Mendix ontwikkelaar bij deze organisatie heb je een gevarieerde baan. Het applicatielandschap wordt vernieuwd en de “schade en

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Junior PHP Developer

Functieomschrijving Junior PHP Developer gezocht! Voor een opdrachtgever in de regio Gelderland zijn wij op zoek naar een Junior PHP Developer die onderdeel gaat worden van het ontwikkelingsteam van deze organisatie. In deze functie ga jij aan de slag met het schrijven van software voor de aansturing van en het managen van windparken en bijbehorende onderdelen. Hiernaast ga jij je bezighouden met het ontwikkelen, testen en onderhouden van diverse webapplicaties. Het team waarin je komt te werken bestaat uit 3 developers, hierdoor krijg je veel verantwoordelijkheid en de kans om jezelf verder te ontwikkelen. Er wordt echter wel van je

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 »

Senior Java developer

Als Senior Developer bij Sogeti ben je onderdeel van onze toonaangevende best-gecertificeerde Java community. Deze bestaat uit ruim 100 gepassioneerde professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfskritische systemen. Een voorbeeld hiervan is een cliënt-volgsysteem bij Reclassering Nederland. Andere klanten waar wij onder andere voor werken: KPN, Philips, Nationale-Nederlanden, Kamer van Koophandel, ABN AMRO, Bovemij, Aval en de Nationale Politie. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We

Bekijk vacature »

.NET Developer

Functie omschrijving Net afgestudeerd en op zoek naar een leuke baan als developer? Zoek niet verder! Ik heb een functie beschikbaar als back-end developer, bij een leuk familiebedrijf. Je gaat werken met de Microsoft stack en de technieken C# en .NET. Verder maak je gebruik van MVC en Entity framework. SQL kent ook geen geheimen voor jou. Jouw verantwoordelijkheden: Nieuwe maatwerk software bouwen; API koppelingen bouwen; Applicaties en software optimaliseren; Back-end programmeren. Een erg uitdagende functie, met veel vrijheid. Je kan meerdere dagen thuis werken en als je op kantoor werkt wordt de lunch verzorgd. Heb je interesse, reageer dan

Bekijk vacature »

Softwareontwikkelaar Cleopatra

Functieomschrijving: 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 bromen 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.De opdracht bestaat uit: het programmeren van de diverse modules;het tijdens demo's tonen van de

Bekijk vacature »

Als Front-end developer werken aan apps voor het o

Functie Als Front-end developer werk je intensief samen met 1 van de UX-designers en denk je mee over de gebruiksvriendelijkheid en design van onze web- en mobile apps. Je bent betrokken bij sessies met gebruikers om designs te valideren en usability van de app-in-wording te testen. Vervolgens gebruik je dit om samen met je team waarin ook back-end (.NET) developers zitten, te zorgen voor de realisatie van de best mogelijke apps voor studenten en docenten. Eisen • Je hebt een hands-on development en coding mind-set en werkt graag aan een high quality code base welke je consequent onderhouden kan worden

Bekijk vacature »

PHP Developer

Functieomschrijving Wij zijn op zoek naar een PHP Developer met Laravel ervaring! Voor een groeiende werkgever in regio Breda zijn wij op zoek naar een medior PHP developer met Laravel ervaring. Je gaat aan de slag met het ontwikkelen van maatwerk software voor klanten in een specifieke markt. Als PHP developer ben je samen met een gemotiveerd team van 6 collega’s verantwoordelijk voor de ontwikkeling, beheer en het innoveren van informatiesystemen voor klanten in een specifieke branche. Als software developer ondersteun je complexe uitdagingen van klanten. Je brengt hun wensen in kaart en vertaalt deze door naar maatwerk software. Om

Bekijk vacature »

Junior .NET developer

Functie Ons programma is voor afgestudeerde enthousiastelingen die het als een uitdaging zien om met een klein dynamisch team bij de grootste bedrijven van Nederland aan de slag te gaan. Tijdens jouw dienstverband word jij begeleid door een talent manager. Het ontwikkelen van jouw talent staat hierbij centraal. Het programma doorloop je met een team van circa 8 Mede- trainees. De eerste maand start je met een fulltime inhouse opleiding. Deze staat geheel in het teken van de werkzaamheden die jij verder in het programma zult uitvoeren. Na deze opleidingsmaand ga je aan de slag in een dynamische omgeving bij

Bekijk vacature »

Junior Fullstack Developer

Functie omschrijving Heb jij je universitair diploma Informatica afgerond en ben jij op zoek naar een startersfunctie waar jouw ontwikkeling in een hoog vaandel staat? Voor een softwarebedrijf in Amsterdam zijn wij op zoek naar een Junior Fullstack Developer. Je begint met een op maat gemaakte training om de kennis bij te spijkeren die jij nog mist. Uiteraard leer je het meeste tijdens je werk, maar de training geeft je hiervoor alvast de juiste handvatten. Je kunt het volgende verwachten! Jij ontwikkelt in technieken als Java, Javascript en SQL. Je werkt hierbij volgens de Agile/Scrum methode; Na het afronden van

Bekijk vacature »

Traineeship ICT regio Amsterdam/Utrecht

Wat ga je doen? Het traineeship begint met een fulltime maand cursussen en praktijkdagen, waarin je de basis van het IT-vak leert op de Shared Servicedesk (SSD). Daarnaast ga je meteen aan de slag voor je eerste certificering! (ITILv4). Je start in een groep met 4 tot 10 deelnemers, waarmee jij gedurende die maand optrekt en je kennis kunt delen. Na het voltooien van de eerste maand ga je direct voor een langere periode aan de slag bij één van onze klanten of blijf je intern bij ons op de Shared Servicedesk. Je bent het eerste aanspreekpunt van de eindgebruikers

Bekijk vacature »

Software developer

Functieomschrijving Voor een gewaardeerde werkgever in de regio van Middelburg zijn wij op zoek naar een ambitieuze PHP/Symfony Developer. Een enthousiast persoon die het development team komt versterken met het aanpakken van complexe en nieuwe projecten. Ben jij op zoek naar een baan met veel uitdaging binnen een snelgroeiend e-commerce bedrijf, waar je de tijd en ruimte krijgt voor zowel persoonlijke als professionele groei? Lees dan snel verder! Dit ga je doen: Aanpassingssuggesties van collega’s in kaart brengen, vervolgens te analyseren en daarna te concluderen of de aanpassing een verbetering is; Ontwikkeling en beheer van de serviceportal in Symfony en

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »
Marthijn Buijs

Marthijn Buijs

27/11/2015 19:26:16
Quote Anchor link
Goedenavond,

Ik ben eigenlijk wel benieuwd wat de mensen hier op het forum hierover zeggen:
Wat is het grootste verschil tussen MySQLi vs PDO?

Ik heb al op internet gezocht maar ik wil het van de mensen hier horen!


Ik ben benieuwd!
 
PHP hulp

PHP hulp

21/11/2024 19:18:36
 
Ivo P

Ivo P

27/11/2015 20:20:25
Quote Anchor link
als het om het grootste verschil gaat,

ik denk dat dat is dat pdo op meerdere type db werkt en mysqli alleen op (forks van) Mysql
 
Ben van Velzen

Ben van Velzen

27/11/2015 20:42:49
Quote Anchor link
PDO is gericht op het op een uniforme manier aanspreken van verschillende databases. mysqli is gewoon een extensie die gericht is op mysql. Wanneer je PDO gebruikt kun je in theorie eenvoudig van database wisselen. Ik zeg expres in theorie, omdat dit in de praktijk vaak tot problemen leidt.
 
Marthijn Buijs

Marthijn Buijs

27/11/2015 21:33:47
Quote Anchor link
Welke van de twee wordt eigenlijk aangeraden?

Ik heb gehoord dat MySQLi ~2.5% sneller is en zelf vind ik het ook makkelijker werken dan PDO.
Wat zou echt een goede reden zijn om MySQLi aan de kant te schuiven en volledig over te stappen naar PDO?
 
Ben van Velzen

Ben van Velzen

27/11/2015 21:56:32
Quote Anchor link
Een goede reden? Het is een kwestie van smaak. 2,5% sneller is praktisch niks, en het is ook belangrijk bij welke operaties dat is. De meeste mensen kunnen niet eens goed met een database omgaan, waardoor het al helemaal geen punt meer is.

Ik werk zelf met PDO omdat ik met PostgreSQL werk, ik raak MySQL niet aan tenzij er sprake is van dwang. Dan werkt PDO toch net even wat handiger.
 
Thomas van den Heuvel

Thomas van den Heuvel

27/11/2015 23:27:17
Quote Anchor link
PHP.net zegt zelf dat de oude MySQL driver (die gaat verdwijnen), MySQLi en PDO (in combinatie met de PDO_MYSQL driver) alle drie even snel zijn, dus om de snelheid hoef je het niet te doen. Waar heb jij jouw informatie vandaan?
Quote:
The overall performance of all three extensions is considered to be about the same. Although the performance of the extension contributes only a fraction of the total run time of a PHP web request. Often, the impact is as low as 0.1%.
bron

Een verschil tussen PDO en MySQLi is dat PDO een echte interface is, in de zin dat de manier van communiceren met een (ondersteund) database(type) altijd hetzelfde is. Hetgeen je vervolgens daadwerkelijk zegt tegen je database (de SQL code) is weer database-specifiek tenzij je je bedient van een Database Abstractie Laag (DAL). Het vaak genoemde voordeel van PDO boven MySQLi dat je, indien je van database schakelt, "niets nieuws hoeft te leren" gaat dus eigenlijk niet op. In de praktijk gaat dit ook niet of nauwelijks voorkomen dus dit is in zekere zin een non-argument.

Een ander verschil tussen PDO en MySQLi is dat PDO niet geschreven is voor een specifieke database, hiervoor zijn de PDO-specifieke database-drivers, zoals PDO_MYSQL. En daar zit hem de kneep: de leercurve zit helemaal niet in het handjevol klassen en methoden van PDO, maar in de configuratie en het gebruik van de specifieke database-driver. Zoals gezegd is PDO niet geschreven voor een specifieke database en is daarom op voorhand (per definitie, by design) dus ook niet afgesteld voor optimaal gebruik van een specifieke database(type).

Nog een verschil tussen PDO is dat MySQLi zowel een procedurele alsook een object georiënteerde variant heeft, terwijl PDO zich alleen van een OOP variant bedient. Ik zou trouwens geen gebruik maken van de procedurele variant van MySQLi tenzij je een knetter oud project (met mysql_ functies) moet migreren waar eigenlijk geen tijd aan besteed mag worden ofzo.

Een ander verschil is dat bij PDO je eigenlijk altijd gebruik maakt (zou moeten maken) van prepared statements, in MySQLi ben je vrij om te doen wat je wilt: je kunt zelf je queries bouwen of van de prepared statement functionaliteit in MySQLi gebruik maken. Deze laatste variant (van MySQLi) is naar mijn mening nogal brak en maakt ook echt gebruik van "prepared statements in de letterlijke betekenis van MySQL". In PDO zijn prepared statements een laag in de functionaliteit, in MySQLi maak je echt gebruik van prepared statements in-the-MySQL-sense. Dit kun je in PDO ook aanzetten door het attribuut PDO::ATTR_EMULATE_PREPARES de waarde false te geven. Dit heeft wel tot gevolg dat een SELECT statement wat je prepared en daarna execute uitmondt in de uitvoer van twee SQL-queries. Zorg dat je heel goed begrijpt hoe de driver werkt en ook hoe de MySQL-database hiermee omgaat!

Het grootste verschil in het gebruik is wat mij betreft de mate van controle die je hebt over de uiteindelijke vorm van je SQL statement (je query). Ik vind deze bij PDO niet echt fantastisch. Daarbij komt nog het volgende: ik heb tot op heden geen manier gevonden om een ge-prepared statement in PDO (dus de query in zijn uiteindelijke vorm) te debuggen anders dan de query te loggen en weer uit je log te vissen. Als je applicaties from scratch aan het schrijven bent is dat niet bepaald fijn ontwikkelen met name als je (complexe) queries moet debuggen. Als iemand hier een oplossing voor weet? Dit hoeft trouwens niet per se een bezwaar te zijn, als je applicatie is opgebouwd uit allerlei standaard componenten en je tevens je queries bouwt via zo'n DAL dan ben je zelf al niet meer bezig met het bouwen van je eigen queries maar worden deze voor je gegenereerd.

Het enige plausibele argument wat ik ooit gehoord heb om te kiezen voor PDO (i.c.m. PDO_MYSQL) boven MySQLi is als je er nog niet helemaal over uit bent welk databasetype je gaat gebruiken (noot: zit je nog steeds met de verschillende "database dialecten" bij verschillende databases tenzij je een DAL gebruikt), maar als je dan toch voor MySQL gaat zou ik kiezen voor een API die specifiek geschreven is voor deze database. Ik zou daarbij wel een interface maken voor je database, met andere woorden, toch een soort van abstractie toepassen in de communicatie met je database zodat deze functionaliteit niet 100% database specifiek (hardcoded) is. Stel dat de manier waarop PHP communiceert met MySQL-databases op een gegeven moment (weer) gaat verschuiven, dan kan dit het verschil betekenen tussen (in het gunstigste geval) het aanpassen van de implementatie van de interface, in tegenstelling tot een search en replace door je hele code van MySQLi-specifieke functies (een beetje wat nu aan de hand is met de migratie van mysql_ functies naar mysqli, daar stink je dan toch niet weer in he? :)).
Gewijzigd op 27/11/2015 23:35:20 door Thomas van den Heuvel
 
Ben van Velzen

Ben van Velzen

28/11/2015 00:10:40
Quote Anchor link
Ik vind het sowieso een beetje vreemd dat die verschuiving er moet zijn. Oud is niet per definitie slecht, de libpq functies die binnen PHP beschikbaar zijn zijn ook niet slecht, maar net zo oud als de mysql functies. Deprecation van de pg_ functies zit er echt nog niet in. Ik werk vooral met PDO omdat dat netjes exceptions gooit mist je dat instelt. Ik heb in het verleden een laag om de PostgreSQL errors heen gelegd om de juiste exceptions te gooien, maar dat is ook niet alles.
 
Thomas van den Heuvel

Thomas van den Heuvel

28/11/2015 13:09:05
Quote Anchor link
Dat is ook iets, je wordt een beetje in het try/catch- en exceptions-keurslijf gedwongen bij PDO. Ook dit hoeft geen nadeel te zijn, maar als de rest van je applicatie niet zo is opgezet kan dit mogelijk wat botsen.

Meteen bij de declaratie van je connectie (creatie van een PDO object) kan het al misgaan. Exceptions die niet worden opgevangen produceren een fatal error. Als je je declaratie niet in een try-catch blok zet en het maken van een connectie mislukt (dit kan meerdere oorzaken hebben) wordt de foutmelding mogelijk op je scherm uitgespuugd. Laten die lichten die deze foutmelding verzonnen hebben nu bedacht hebben dat daarin de gegevens voor het maken van een connectie weer opgelepeld worden...

PDO lijkt ogenschijnlijk simpel, maar er zitten een heleboel addertjes onder het gras.
 
Marthijn Buijs

Marthijn Buijs

28/11/2015 15:33:22
Quote Anchor link
Super bedankt allemaal voor de informatie, ik weet genoeg!
 



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.