MySQLi vs PDO

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer Senior

Dit ga je doen Het ontwikkelen van backend applicaties in C#; Het maken van vele koppelingen met andere ERP-applicaties zoals JD Edwards en SAP; Je bent (mede) verantwoordelijk voor het opstellen van technisch ontwerpen voor de te ontwikkelen software oplossingen; Je bent gemiddeld 90% van je tijd inhouse oplossingen aan het ontwikkelen en testen. De overige 10% van je tijd ben je bij klanten op locatie om oplossingen te implementeren, klanten te begeleiden en de software verder te innoveren; Naast het zelfstandig ontwikkelen van software oplossingen ben je ook bezig met het waarborgen van je contacten bij de klant, het

Bekijk vacature »

Senior Javascript developer

Functie Het platform is gebouwd in een moderne JavaScript stack, die gebruikt maakt van:  React.js  Redux  TypeScript  Node.js  Google Cloud functions (node.js)  Semantic UI Alle code wordt getest en beoordeeld door collega developers. De continuous integration pipeline maakt het mogelijk om elke dag waarde te leveren aan hun klanten. Het ontwikkelproces is pragmatisch en gebaseerd op Scrum. Wat je zult doen: Ten eerste kun je nadrukkelijk jouw eigen stempel drukken op de technologie, het product en de cultuur van het bedrijf. Je bent bezig met het uitwerken van de architectuur van nieuwe functionaliteiten op

Bekijk vacature »

Software developer - C Sharp

Functie omschrijving Voor een opdrachtgever, met een prachtig kantoor in omgeving Wateringen zijn wij op zoek naar een software ontwikkelaar die graag werkt met C#, JAVA of Oracle. Heb jij interesse in het programmeren en ontwikkelen van software? En heb jij enige ervaring met Oracle databases en PL/SQL? 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 jij het leuk om in een Agile/Scrum omgeving te werken? Wil jij

Bekijk vacature »

SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 13382 Introductie We is looking for a HANA Developer to work for our client. The candidate has to have an experience in building Data Intensive Applications (DIA’s). The role of a HANA Developer at ASML involves working on building Data Intensive Applications in an industrial/enterprise environment. The primary responsibility is to handle data from various sources and determine the best way to structure it for use by data analysts, who will run queries and algorithms against it for predictive and prescriptive analytics through machine learning. Wat verwachten we van jou?

Bekijk vacature »

Full stack .NET developer Microsoft 365

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 »

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 »

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 »

Medior PHP Developer

Bij Getnoticed doen wij wat we leuk vinden, websites bouwen en online marketing. Voor veel van onze klanten doen we dan ook allebei. Wel zo fijn om campagnes te draaien voor conversiegerichte website die in eigen beheer zijn. In onze vestiging in Nederweert zitten onze development afdelingen en worden de websites gebouwd. Op dit moment zijn we op zoek naar jou: dé PHP/Back-end developer die net als wij, het hoofd boven het maaiveld durft uit te steken! In het kort Even een paar punten die omschrijven wat deze toffe baan inhoudt: Het bedenken van nieuwe functionaliteiten Het verbeteren van het

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Voor een opdrachtgever in omgeving Zoetermeer zijn wij op zoek naar een ontwikkelaar ter versterking van het huidige developers team. Heb jij altijd al willen werken voor een bedrijf, dat veilige netwerkverbindingen levert, door middel van veilige oplossingen, die door middel van de nieuwste technologieën ontwikkelt zijn? Stop dan nu met zoeken! 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

Bekijk vacature »

Integratie Developer / Architect

Dit ga je doen Als Integratie Developer / Architect binnen deze organisatie krijg je echt de kans om impact te maken. De organisatie is groeiende maar houdt een corporate cultuur buiten de deur. Heb je een goede business case: zorg voor goede argumentatie en ga ervoor! Geen stroperig beslissingsproces dat jouw ideeën in de weg staat! Enkele van jouw taken: Je ontwerpt en ontwikkelt nieuwe integraties met behulp van interne tools (Boomi) of externe partners; Je vertaalt functionele specificaties naar technische oplossingen; Je denkt mee over strategische ontwikkelingen op het gebied van applicatie integratie; Je voert regie op leveranciers 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 »

.NET developer

Functie Als ervaren .NET ontwikkelaar start jij in één van onze vier scrumteams. Met 30 ontwikkelaars werk jij aan de doorontwikkeling van ons core product. Ook werkt jouw team aan maatwerkoplossingen op aanvraag van de klant en op projectbasis. Wij vinden het erg belangrijk dat onze ontwikkelaars met plezier naar werk gaan. Een deel hiervan ligt uiteraard bij jezelf, als jij ontwikkelen niet leuk vindt, ben jij bij ons echt aan het verkeerde adres. Jouw team bestaat namelijk uit een groep gepassioneerde vakidioten die dit werk doen omdat dit eerst een hobby was! Daarnaast wordt er intern rekening gehouden met

Bekijk vacature »

Oracle Apex developer

Bedrijfsomschrijving My client is a technology company based in Den Bosch, the Netherlands. They specialize in providing innovative software solutions to clients, and they are currently looking for an experienced Oracle Apex developer to join the IT team. Functieomschrijving As an Oracle Apex developer, you will be responsible for designing, developing, and maintaining web-based applications using Oracle Apex. You will work closely with project managers, business analysts, and other developers to ensure that clients' needs are met and that the software solutions are of the highest quality. Responsibilities: Design, develop, and maintain Oracle Apex applications. Work with project managers and

Bekijk vacature »

Medior/senior Fullstack developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

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

16/11/2024 05:36:47
 
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.