MySQLi vs PDO

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Lead Webdeveloper

As Lead Web Developer at KUBUS you are responsible for the implementation design of requirements and the software architecture of the web application and services of BIMcollab. In your role as lead developer you will naturally search for the optimum between the required implementation time, the performance of the application and a fast go-to-market of features, in line with our automated test and release train. Together with the other senior developers in your team you monitor the architecture of the application and you advise the product owner about necessary refactoring to improve the maintainability of the platform. Our development team

Bekijk vacature »

Front-End React Developer

As a Front-End React Developer you improve the user-experience of our web applications for your colleagues in Coolblue. How do I become a Front-End React Developer at Coolblue? As a Front-End React Developer you are responsible for developing user interface components and implementing them using React.js concepts and workflows. You work with the UX Designer and get energy from coming up with creative solutions and present these within the team. During the day you gather and welcome feedback on your technical and soft skills. Would you like to become a Front-End React Developer at Coolblue? Read below if the job

Bekijk vacature »

Java developer (remote)

Functie Wat ga je doen als Java Developer? Jij als Java ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 ontwikkelaars binnen onze organisatie waarbij jij de brug slaat tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je jouw taken op voor de dag. Hieronder een aantal taken die jij zal uitvoeren: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden

Bekijk vacature »

Cobol Developer

Dit ga je doen Als Cobol Ontwikkelaar zal je gaan meebouwen aan een onderdeel van het backend systeem waarbij je het functionele ontwerp vertaald naar een technische oplossing die geïntegreerd kan worden in de huidige omgeving. Je zorgt ervoor dat de bedrijfsprocessen op een efficiënte manier worden uitgevoerd en werkt proactief aan het verbeteren hiervan. Samen met jouw collega’s reviewen jullie elkaars code en test je je eigen code. Je werkt nauw samen met andere ontwikkelaars, testers en functioneel ontwerpers. Taken pakket: Beheren en doorontwikkelen van de bestaande omgeving; Vertalen van een functionele vragen naar een technische oplossing; Doorvoeren van

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

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 »

Python Developer

Dit ga je doen Als Python Developer ben je verantwoordelijk voor: Het ontwikkelen van Stuurprogramma's in Python zodat er verbindingen kunnen worden gelegd tussen besturingssystemen en (AV) hardware; Het testen en debuggen van Stuurprorgamma's; Het communiceren met noodzakelijke partijen in gevallen waar extra technische details nodig zijn om een Stuurprogramma te ontwikkelen of problemen op te lossen; Het maken van de nodige technische documentatie (in het Engels); Het participeren in een Scrum/Agile omgeving. Hier ga je werken Deze internationale organisatie is wereldwijd een succesvol producent en leverancier van professionele AV hard- en software. Klanten gebruiken de producten o.a. voor het

Bekijk vacature »

Low Code Developer - Consultant

Functie omschrijving Wil jij fungeren als een spin in het web en samenwerken met klanten? Voor een leuke en interessante opdrachtgever in omgeving Leiden zijn wij op zoek naar een Low Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten en het leiden van projecten. Ben jij toe aan een nieuwe uitdaging en heb jij verstand van datamodellering en NO CODE Platformen? Lees dan snel verder! Bij deze rol horen de volgende werkzaamheden: Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform,

Bekijk vacature »

Network Engineer (f/m/d) in Heidelberg

Network Engineer (f/m/d) The IT Services team operates and supports the IT infrastructure and services at EMBL headquarters in Heidelberg and at the laboratory’s sites in Barcelona and Rome. As part of IT Services, the Network team is responsible for managing and developing the network infrastructure in our data centres, on campus, and to our external network providers. As a leading scientific institution with highly data-intensive research, extensive data flows at and between the laboratory’s six sites and to the Internet, EMBL is connected to national and international scientific networks using state-of-the-art technologies from vendors including Cisco, Extreme Networks and

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Full Stack Software Ontwikkelaar gezocht! Voor een bedrijf in de regio van Ermelo zijn wij op zoek naar een Software Ontwikkelaar die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van SaaS applicatie van dit bedrijf. Hierbij ga jij voor- en samenwerken met de klanten van de organisatie, het is hierbij dus van groot belang dat je communicatief vaardig bent en dat je beschikt over beheersing van zowel de Nederlandse als Engelse taal. Bedrijfsprofiel Waar ga je werken? Altijd al in een echt familiebedrijf willen werken? Dan is dit je kans! Het bedrijf waar je komt te

Bekijk vacature »

Senior developer (PHP en VB.NET)

Functie De development afdeling bestaat uit 2 teams. Het productteam (10 developers) is verantwoordelijk voor verschillende applicaties met als doel om zoveel mogelijk te automatiseren en uit te werken tot standaard software. Met diverse Solutions Architecten en ervaren developers denken ze voortdurend mee met hun klanten en bouwen ze de basis van het uiteindelijke maatwerk dat wordt geleverd. Hiernaast hebben ze een maatwerk/projectteam. Dit team bestaat momenteel uit 8 developers (junior tot senior) en is verantwoordelijk voor het maatwerk in hun klantprojecten. Momenteel zijn ze op zoek naar een senior developer die aan de slag gaat in het productteam. Hierin

Bekijk vacature »

Back-end Programmeur

Functieomschrijving Heb jij kort geleden je HBO ICT in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een ambitieuze werkgever in de regio van Breda zijn wij op zoek naar een Back-end programmeur met affiniteit met C#.NET, SQL en MS Access. Samen met team bestaand uit ware ICT professionals ben je verantwoordelijk voor het bouwen van maatwerk software voor hun klanten. Belangrijk is dat je kennis of ervaring hebt van C#.NET en SQL. Je toont een flexibele en sociale houding naar klanten toe. Je denkt in nieuwe mogelijkheden & gaat graag de uitdaging aan. Bedrijfsprofiel De

Bekijk vacature »

PHP Developer

Functie Middels Scrum en sprints bouw jij in deze functie mee aan complexe webapplicaties en ons SaaS platform. Hierbij hoort ook architectuur tot een van je taken. Daarnaast ben je één van de leden van het Scrum team. Dat betekent dat je naast je kerntaken ook in contact staat met de product owner. Oftewel, je bent bij het gehele ontwikkelproces betrokken. Tools die hierbij gebruikt worden zijn o.a. PHP, Symfony en Git. Eisen • Minimaal HBO werk- en denkniveau • Minimaal 3 jaar aantoonbare ervaring met PHP • Kennis en ervaring Symfony (Laravel is pré) & Lando • Kennis van

Bekijk vacature »

Software Developer

Bij een bedrijf in de machinebouw, regio Roosendaal, zijn we op zoek naar een: Software Developer Waar ga je werken? Onze opdrachtgever is gespecialiseerd in de grondverzetmachines. Al meer dan 50 jaar leveren ze zowel nationaal als internationaal diverse machines. Het is een familiebedrijf met een informele werksfeer. Wat ga je doen? Als Software Developer je verantwoordelijk voor: - Je werkt voortdurend aan oplossingen voor het op afstand bewaken en besturen van oogstmachines; - Het visualiseren van gegevens in rapporten, apps of andere formaten; - Voorspellend machineonderhoud; - Taakplanning; - Je schrijft aangepaste plug-ins om gegevens te importeren of exporteren

Bekijk vacature »

Fullstack developer

Functie omschrijving We are looking for a dutch native speaker Wil jij werken als Senior Developer en werken aan een applicatie die duizenden marketingcampagnes automatisch aanstuurt? Dit is je kans! Kom werken voor onze opdrachtgever en in deze rol zul je veel vrijheid en verantwoordelijkheid krijgen om gezamenlijk de applicatie naar een hoger plan te tillen. Wat ga je verder doen: Optimaliseren, beheren en uitbreiden van onze applicatie; Het bouwen van aansluitingen op de systemen van partners middels API’s; Meedenken over de technische/ontwikkel-standaarden; Proactief verbeterpunten voorstellen. Bedrijfsprofiel Het is een organisatie die met een team van verschillende developers én marketeers

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

22/12/2024 20:43:32
 
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.