Learnit Training

5 redenen om via PDO met je SQL-database te communiceren

Er zijn verschillende manieren om vanuit PHP met een database te communiceren. Sinds PHP 5.1 is daar een mooie extensie bijgekomen: PHP Database Objects (PDO). Gebruik je nog de ouderwetse mysql_connect() en mysql_query() functies? Hier vijf redenen om over te stappen:

  1. Parameter binding

    Het maken van een query met input van website-bezoekers brengt gevaren met zich mee. Input van bezoekers kan gevaarlijke SQL code bevatten. Als de code onderdeel wordt een query is er sprake van een SQL injectie, een veel voorkomend beveiligingslek.

    Met PDO kun je beter wapenen tegen SQL injecties dankzij 'parameter binding'. PDO biedt de mogelijkheid placeholders te gebruiken in je query. Daarmee voorkom je dat er ongewenste SQL code in de query terechtkomt.

  2. Exploits of a mom

    Randall Munroe, xkcd.com, CC BY-NC 2.5

  3. Transactions

    Wijzigingen in je database staan vaak niet op zichzelf. Vaak vraagt één aanvraag van de bezoeker om wijzigingen in meerdere tabellen. Bij het doen van een bestelling in een webshop moet niet alleen de order worden opgeslagen, maar ook de voorraad worden bijgewerkt.

    Mocht één van deze queries niet goed gaan, bijvoorbeeld omdat de voorraad niet toereikend is, komt de database in een inconsistente toestand. Met transacties kun je in zo'n geval een 'rollBack' doen, waarmee alle wijzigingen in de database sinds het begin van de transactie ongedaan worden gemaakt.

  4. 'Universele' interface

    Met PDO ben je niet gebonden aan één database. Maar liefst twaalf databasesystemen worden ondersteund, waaronder MySql, PostgreSQL, Microsoft SQL Server en Oracle. Dankzij PDO kan je programma er op dezelfde manier mee communiceren. Tijdens het verbinden geef je aan wat voor type database het gaat, daarna kun je ze met dezelfde methoden bevragen.

  5. Verdwijnen van oude functies

    De verouderde mysql_*() functies worden niet meer ondersteund vanaf PHP versie 5.5.0. In de nieuwste versies (vanaf PHP 7.0.0) zijn ze zelfs niet meer opgenomen en dus niet meer te gebruiken.

  6. Object georiënteerd

    PDO is geheel object georiënteerd. Je hebt dus alle voordelen van object georiënteerd programmeren, inclusief exceptions. Met exceptions kun je fouten, zoals verbindingsproblemen, op een elegante manier afhandelen.

Opmerking: Is de PDO Extensie niet beschikbaar op het systeem waar je website op draait, en gebruik je een MySQL database? Stap dan over op mysqli. Minder universeel en elegant dan PDO, maar biedt ook parameter binding, transactions en stored procedures.