MySQLi vs PDO

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front-end (Angular) developer - remote werken

Functie Als Front-end (Angular) developer ga je aan de slag met het uitbouwen van hun webapplicatie, als één van de front-end experts ga je samen met collega’s in een devops team werken aan een nieuw front-end voor hun calculatie oplossing. Binnen de calculatiesoftware kunnen meerdere professionals tegelijk samenwerken, 3D calculaties uitvoeren en ook inzien met de benodigde specifieke details. Deze software wordt veel ingezet om projectbeschrijvingen en kosten in kaart te brengen, en tijdens de uitvoering te bewaken. Maar hiernaast liggen er in de toekomst veel meer plannen op het gebied van front-end in de andere applicaties. Genoeg te doen

Bekijk vacature »

Software Programmeur PHP

Functie Wij zijn op zoek naar een PHP programmeur voor een leuke opdrachtgever in omgeving Alblasserdam. Heb jij altijd al willen werken bij een bedrijf dat veilige netwerkverbindingen levert door middel van veilige oplossingen? Lees dan snel verder. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Tevens

Bekijk vacature »

Senior PHP developer met ambities tot Software Arc

Functie Momenteel zijn ze op zoek naar een ervaren PHP developer die zichzelf graag bezighoudt met zaken als architectuur en de algehele verbetering van structuren en standaarden. Het is eigenlijk meer operationeel als uitvoerend omdat je bezig gaat met zaken als het verder uitrollen en verbeteren van testautomatisering, codereviews, tickets en de doorloop hiervan en architectuurkeuzes. Mocht je hiernaast ook wat DevOps kennis meenemen is dit mooi meegenomen! Vanwege het kleine team maar de wereldwijde impact die zij leveren is er veel focus op kwaliteit. In deze functie werk je aan één van hun belangrijkste applicaties. Hierin werk je nauw

Bekijk vacature »

Medior/senior PHP ontwikkelaar E-commerce

Functie Het software development team bestaat momenteel 5 scrum teams . Ieder team heeft een eigen SCRUM Master en eigen tester. Zij werken voornamelijk in PHP en met hun eigen geschreven framework wat Symfony based is . Jij bent samen met je collega’s verantwoordelijk voor het interne softwaresysteem en alle projecten die daar omheen lopen. Alles wat jij ontwikkelt, wordt direct toegepast en uitgerold (wereldwijd). Dit maakt jouw werk tastbaar en uitdagend! Een greep uit jouw werkzaamheden: Toevoegen en ontwikkelen van nieuwe functionaliteiten Logistieke software ontwikkelen voor intern gebruik Tientallen gigabytes aan data inzichtelijk maken Altijd op zoek gaan naar

Bekijk vacature »

Software Developer

Dit ga je doen Ontwikkelen aan de software dat beschikbaar is op de substations; Ontwikkelen in C++, C, Python en JavaScript. Daarnaast op een Embedded Linux omgeving, opgebouwd met containers en DevOps; Meewerken aan cyber security (OWASP); Uitvoeren/bouwen van geautomatiseerde testen in samenwerking met de Quality Specialist; Vertalen van wensen van de klanten/business naar werkbare/duurzame oplossingen. Hier ga je werken Als Software Ontwikkelaar kom je te werken bij een organisatie gericht op de (internationale) energiemarkt, waar wordt gewerkt voor het verwerven en verwerken van realtime, high quality data. Er wordt gewerkt vanuit het hart van de substations en direct voor

Bekijk vacature »

Front-end Developer Magento 2/Wordpress

Voor het aantrekkelijk houden en steeds vernieuwen van de huidige websites en webshops en het meedenken in de marketing zijn wij per direct op zoek naar een ervaren Front-end developer met gedegen kennis van Magento 2 (webshops) en Wordpress (websites). Wat bieden wij jou Mooi salaris! Meteen op contract bij de opdrachtgever! Gezellig, Kempisch bedrijf! 35 uur per week! Auto van de zaak! Wie ben jij Van een front-end developer verwachten wij: Een afgeronde Bachelor ICT opleiding met profiel ICT & Media Design. Dat je in het bezit bent van een Magento 2 professional front-end developer certificaat; Je hebt ruime

Bekijk vacature »

Fullstack Developer TOTO

Do you want to work with the latest technologies on the development of new systems and applications? Get moving and strengthen Nederlandse Loterij as a Fullstack Developer TOTO. Thanks to your efforts, complex business critical applications are always running smoothly. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Fullstack Developer you score by: Taking ownership of the development cycle of an application in a large scale, high availability, geo redundant landscape Coaching your peer developers and safeguarding code quality Integrating the application with other components of the system using the available API’s Managing

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 »

APEX Ontwikkelaar in een team van Oracle Developer

Bedrijfsomschrijving Wij zijn op zoek naar een APEX Ontwikkelaar om onze opdrachtgever in Den Haag te versterken. In deze rol zul je verantwoordelijk zijn voor het ontwikkelen en onderhouden van de front-end van onze applicaties met behulp van Oracle Application Express (APEX). Je werkt aan zowel inhouse als externe projecten. De sfeer binnen het Oracle team is gemoedelijk en men probeert elkaar te helpen én van elkaar te leren. Zo ontstaat er een prettige en plezierige werksfeer waar ruimte is voor persoonlijke ontwikkeling en groei. Er wordt gewerkt met de meest nieuwe technologieën waardoor je kennis up-to-date blijft. Het bedrijf

Bekijk vacature »

C# developer

Functie Als ervaren Software Engineer wordt jij verantwoordelijk voor het bedenken en ontwikkelen van technische (maatwerk) oplossingen voor onze klanten en dit samen met de klant af te stemmen. Jij wordt o.a. verantwoordelijk voor de doorontwikkeling het software pakket welke voor ons enorm belangrijk is. Dit pakket zorgt er namelijk voor dat wij complete productielijnen kunnen aansturen en monitoren. Daarnaast heb jij actief contact met onze hoofdvestiging om het software achter een van onze systemen te verbeteren en te herschrijven. Momenteel zijn onze C# applicaties geschreven met o.a. Winforms. Echter hebben wij de actieve ambitie om dit te gaan herschrijven

Bekijk vacature »

Full stack Python developer

Functie Samen met andere collega’s (een product owner, een software manager en een ervaren ontwikkelaar) ga jij onze producten verder ontwikkelen. Jouw verantwoordelijkheden zullen bestaan uit: – Verder wil gaan met de ontwikkeling van onze bestaande producten; nieuwe features! – Meedenkt over de roadmap van onze producten – Als sparringpartner kan optreden op het gebied van development – Zelf ook nieuwe ideeën op tafel durft te leggen en deze van scratch af aan wilt bouwen Hieronder ook een paar voorbeelden van projecten waar we momenteel mee bezig zijn of binnenkort aan willen beginnen: – Real-time interactie creëren in onze web

Bekijk vacature »

Full stack ontwikkelaar Laravel, Vue.js

Functie Als ontwikkelaar binnen deze organisatie hou jij je voornamelijk met lopende projecten voor de verschillende klanten. Zo bouw je de ene dag aan prijsschifting systemen en de andere dag onderzoek je crawlers en stel je ze zo in dat de data goed binnen komt binnen het systeem. Daarnaast bouw je mee aan dashboards en ben je dus constant bezig met het verbeteren van het platform. Er is een vaste werkwijze, zo werken ze met Trello kaarten en onderverdelen ze deze aan het begin van iedere week onder de developers. Dit wordt door de lead developer gedaan, maar in samenspraak

Bekijk vacature »

Software developer - C Sharp

Functie omschrijving Heb jij interesse in het programmeren en ontwikkelen van software? En heb jij enige ervaring met Oracle databases en PL/SQL? Wij zijn voor een leuke opdrachtgever in omgeving Naaldwijk op zoek naar een software ontwikkelaar die graag werkt met C#, JAVA of Oracle. Wij zoeken iemand die breed inzetbaar is en die aan veel verschillende applicaties wilt werken. Als software developer werk je met je collega's samen in een leuk en informeel team aan het (her)ontwerpen van bedrijfssystemen. Je houdt je bezig met het ontwikkelen van REST API's en je onderhoudt applicaties in Oracle PL/SQL en APEX. Vind

Bekijk vacature »

Backend Developer Scrummaster .NET

Samengevat: Deze werkgever is een ambitieus internetbedrijf met een passie voor digitale communicatie. Ben jij geschikt als Backend Developer? Heb je ervaring met .NET platform? Vaste baan: Backend Developer / SCRUM Master Scrum HBO WO €3.800 - €6.000 Deze werkgever is een innovatief bedrijf met enthousiaste mensen die jarenlang ervaring hebben met het ontwikkelen internet- en intranetoplossingen. Wij houden van korte lijnen en open en eerlijke communicatie. Wij zetten graag onze jarenlange ervaring in om perfect werkende oplossingen te ontwikkelen. Wij ondersteunen dienstverlenende organisaties bij het ontwikkelen en realiseren van een effectief, adaptief communicatieplatform. Je ontwikkelt met ons de meest

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 »
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

03/05/2024 12:33:52
 
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.