|
Ook wel eens nagedacht over het feit dat jouw website eigenlijk op meerdere databases moet kunnen draaien?
Zeker als je wilt wisselen tussen webhosters, dan wil je niet dat
het type database jou een extra restrictie brengt in de keuze die je maakt.
Gelukkig hebben de heren van Zend sinds php versie 5 ons een hemelse oplossing toegereikt, genaamd PDO, ofwel PHP Data Objects.
PDO geeft ons de mogelijkheid om verschillende databases aan te roepen zonder ook maar iets wezenlijks aan de code te wijzigen.
Waarom PDO ?
Nu zijn er discussies of je überhaupt wel de portability wilt naar andere databases, met als grootste reden:
- Hoe vaak komt het voor dat je in een project van database wisselt?
Dit is een erg goede reden, dit komt inderdaad namelijk praktisch nooit voor.
Maar wat wel voor komt is dat je je eigen code over meerdere projecten wilt gaan gebruiken.
Wat als je dus geen database abstractie layer gebruikt zoals PDO,
en de klant wil toevallig net niet de database type gebruiken waar jij op hebt geprogrammeerd?
Wil je die klant nee toezeggen en inkomsten missen, of ga je alles herprogrammeren zodat het ook werkt op die specifieke database?
Nu zal niet iedereen de behoefte hebben om verschillende databases te kunnen gebruiken.
Indien dit het geval is, is het lezen van dit artikel praktisch overbodig.
Het begin, verbinden met een database via het PDO Object
Genoeg gepraat, laten we maar bij het begin beginnen.
PDO moet worden gebruikt worden als een object in php, de constructor van PDO kan 4 parameters aan, waarvan de eerste (dsn) verplicht is.
PDO::__construct(
string $dsn,
[ string $username ],
[ string $password ],
[ array $driver_options ]
);
DSN, de eerste parameter, in lengte Data Source Name genoemd, is niets meer dan een string met informatie naar welke database verbonden moet worden.
Deze is vrij eenvoudig opgebouwd, en is een beetje vergelijkbaar met een php url in je browser.
Je begint altijd met het type waarnaar wilt verbinden, in mijn onderstaande voorbeeld zal dit mysql zijn.
Na het aangeven van je type database, is de string verder opgebouwd als:
key=value en deze worden gescheiden met een ;
Om het gemakkelijk te houden zullen we alleen de essentiële keys gebruiken, in ons voorbeeld is dit de databasenaam en het server adres.
Als ik dus wil verbinden naar mysql, met database naam wms, en server webmasterstart.nl, dan ziet de string er als volgt uit:
/**
* PDO Voorbeeld
*/
// de database naam en host naam zijn fictieve adressen, hier horen uiteraard je gegevens van je webhoster
$pdo = new PDO('mysql:dbname=wms;host=webmasterstart.nl');
Dit is al voldoende om een connectie te maken naar de database op wms, maar omdat praktisch alle webhosters wel beveiliging hebben op de database is een gebruikers naam en wachtwoord zeker nodig.
De 2de parameter is de gebruikersnaam en 3de het wachtwoord, hieronder een voorbeeld.
/**
* PDO Voorbeeld
*/
// de database naam en host naam zijn fictieve adressen, hier horen uiteraard je gegevens van je webhoster
$pdo = new PDO('mysql:dbname=wms;host=webmasterstart.nl', 'gebruikersnaam', 'wachtwoord');
Als alles goed gaat zou het script geen fout moeten genereren, en ben je verbonden met de database. Ofwel, klaar voor gebruik!
Lees verder over PDO in deel twee van het artikel Prepare, execute en Fetch !
Auteur : Arno
|