MySQLi

Deze site geeft een aardige tutorial over het allereerste begin met MySQLi.

En deze site geeft een nog veel betere tutorial over MySQLi.

Je zou kunnen denken 'waarom staat dit onderwerp onder de rubriek PHP en niet onder MySQL? Om dat te begrijpen moeten we een goed onderscheid maken tussen PHP en MySQL. MySql draait op een database-server en PHP draait onder Apache. De database bevragen en muteren we via SQL-statements, de zogenaamde queries. Je kunt deze queries via PhpMyAdmin uitvoeren maar meestal gebeurt het via een PHP-script en de opgevraagde data worden direct in een HTML-pagina weergegeven. Andersom worden ingevoerde gegevens via een formulier, gebruikt om de database te updaten, deleten of te inserten. De communicatie van PHP met MySql betreft dus het doorgeven van queries en het ontvangen van data. Hiervoor kent PHP een hele reeks instructies die allemaal beginnen met 'mysql_'. Dit hebben ze w.s. gedaan om aan te geven dat het hier een reeks functies betreft die deel uit maken van een Php-extensie: De mysql-extensie. Dit staat dus helemaal los van MySQL. Stel dat MySQL met Java of Perl samenwerkt, dan vind je hier helemaal niets van terug.

Nu schijnt het dat de mysql_ extensie wat verouderd is en overal wordt dringend geadviseerd om op de nieuwe mysqli_ extensie over te stappen. Mijn ervaring is dat velen nog dik tevreden zijn met de oude. Zelfs een modern en geavanceerd pakket als Wordpress gebruikt nog de oude. Naar het schijnt is mysqli veel sneller maar wat maakt dat uit als mysql_ ook ruimschoots snel genoeg is. Er is trouwens nog een concurrent en dat is de PDO. Dat is een interface die zelfs voor verschillende databasesystemen hetzelfde is (database abstraction layer). Ik heb wat geëxperimenteerd met mysqli en daarbij blijkt dat je de oude mysql heel makkelijk naar de nieuwe kunt omzetten. Gewoon de prefix mysql_ vervangen door mysqli_. Als je dan verder de opdracht voor het verbinding maken even aanpast en in sommige functies de volgorde van parameters omdraait, dan ben je klaar. Op deze manier gebruik je mysqli op de procedurele wijze. Aanbevolen wordt om de objectgeoriënteerde methode te gebruiken, hoewel men daarbij vermeldt dat dit puur een kwestie van smaak is en voor de performance geen verschil maakt.

De objectgeoriënteerde manier van mysqli gebruik is vrij eenvoudig: er worden gewoon objecten gecreëerd die bepaalde methodes en properties hebben. Die moet je dus wel kennen. Lastiger is het gebruik van de nieuwe features, te meer omdat een echt goed leerboek hierover niet te krijgen is. www.php.net is zoals zo vaak niet erg toegankelijk en in allerlei tutorials komt men niet verder dan een voorbeeldje. Wellicht dat om die reden de oude mysql extensie nog zo veel gebruikt wordt.