Inleiding

Wat is MySQL

MySQL (spreek uit als My sequel) is bedoelt als database. In een database kun je bijvoorbeeld je gebruikers opslaan, berichten in een gastenboek of zoals bij deze website het geval is, tutorials. MySQL wordt vaak met PHP gebruikt. Hierbij maakt PHP verbinding met de MySQL server en kan je via PHP alle data ophalen vanuit de MySQL database. Vaak gebruikt men phpMyAdmin om de MySQL database handmatig aan te passen. Dit zit in vrijwel alle webhostingpakketten inbegrepen, vaak moet echter de database zelf worden aangemaakt in het controllepaneel. Bijvoorbeeld cPanel of DirectAdmin.

Basis structuur

De database bestaat uit tabellen. Deze tabellen hebben allemaal een of meerdere kolommen. Deze moet je altijd een type meegeven. Bijvoorbeeld "varchar" voor kleine text of int voor getallen. Dit zijn de meest voorkomende, maar er zijn er nog 25 anderen.

Basis syntaxis

MySQL maakt gebruik van SQL. Deze taal staat bekend om zijn simpele syntaxis. Een voorbeeld:
SELECT *
  FROM tblKlanten 
  WHERE tblKlanten.iKrediet < 0;
Dit wordt een query (nederlands: aanvraag) genoemd. Met deze query haal je alle gegevens op van alle klanten uit de tabel "tblKlanten" waar hun krediet lager dan 0 is. Bijvoorbeeld:
iID int(11)sName varchar(64)iKrediet int(11)
1Jan Jansen300
2Bart de Groot-50
3Sven Zonneveld0
Deze query zal het volgende resultaat geven:
iIDsNameiKrediet
2Bart de Groot-50
Zoals je kunt zien, is "Sven Zonneveld" niet geselecteerd. Dit komt omdat het krediet lager moet zijn dan 0. Aangezien gelijk aan nul niet lager is dan nul, is "Sven Zonneveld" dus niet geselecteerd. Het SELECT gedeelte wordt een statement genoemd. Op SELECT na zijn er ook andere statements. Enkele voorbeelden hiervan zijn:
  • UPDATE
  • INSERT
  • DELETE
  • TURNCATE
Er bestaan nog veel meer statements, maar dit zijn de belangrijkste en zullen ook in de volgende tutorial worden behandeld.

MySQL in PHP

Je kent nu de basis van SQL. Hiermee kun je echter nog niets mee doen in combinatie met PHP! Om MySQL te gebruiken in PHP zijn er verschillende functies. De belangrijkste zijn:
  • mysql_connect()
  • mysql_select_db
  • mysql_query()
  • mysql_fetch_array()
  • mysql_result()
Er zijn nog veel meer functies, maar dit zijn de belangrijkste.

mysql_connect()

Hiermee kun je connectie maken met de MySQL server. Een voorbeeld:
<?php
$sHostname = 'localhost'; //Is meestal localhost
$sUsername = 'username';
$sPassword = 'xxxx';
mysql_connect($sHostname, $sUsername, $sPassword);
?>
Meestal draait de MySQL op dezelfde machine als PHP, in dat geval is de hostname localhost. Je username en password zijn hetzelfde als die van phpMyAdmin. Als je geen user hebt aangemaakt kan dat meestal met je control panel (meestal cPanel of DirectAdmin).

mysql_select_db

Omdat je per user meerdere databases kunt hebben, is deze functie gemaakt. Hiermee selecteer je dus welke database je gebruikt. Voorbeeld:
<?php
$sHostname = 'localhost'; //Is meestal localhost
$sUsername = 'username';
$sPassword = 'xxxx';
$sDatabase = '';
$rsConnection = mysql_connect($sHostname, $sUsername, $sPassword);
mysql_select_db($sDatabase, $rsConnection);
?>
De laatste parameter hier, heet de link_identifier. Als je meerdere MySQL verbindingen hebt is dat noodzakelijk, anders niet.

mysql_query()

Nu kun je wel verbinding maken met de MySQL server, maar hier kun je uiteraard niets mee als je geen MySQL queries kunt doen. Daarvoor hebben we mysql_query(). Voorbeeld:
<?php
$sHostname = 'localhost'; //Is meestal localhost
$sUsername = 'username';
$sPassword = 'xxxx';
$sDatabase = '';
$rsConnection = mysql_connect($sHostname, $sUsername, $sPassword);
mysql_select_db($sDatabase, $rsConnection);
$rsSQL = mysql_query('SELECT * FROM `tblKlanten` WHERE `iID` = \'1\' LIMIT 1');
?>

mysql_fetch_array()

Aan de query in het bovenstaande voorbeeld hebben we nog niets, het geeft namelijk alleen een result, en geen array of object. Je kunt 2 functies gebruiken om hiervan een array te maken:
  • mysql_fetch_array()
  • mysql_fetch_assoc()
Er is zo goed als geen verschil tussen deze 2, alleen dat je bij mysql_fetch_array() 2 keer zoveel key's hebt, je krijgt namelijk ook de numerieke erbij. In het volgende voorbeeld zal dit duidelijker worden.
<?php
$sHostname = 'localhost'; //Is meestal localhost
$sUsername = 'username';
$sPassword = 'xxxx';
$sDatabase = '';
$rsConnection = mysql_connect($sHostname, $sUsername, $sPassword);
mysql_select_db($sDatabase, $rsConnection);
$rsSQL = mysql_query('SELECT * FROM `tblKlanten` WHERE `iID` = \'1\' LIMIT 1');
$aKlant = mysql_fetch_array($rsSQL);
$aKlantAssoc = mysql_fetch_assoc($rsSQL);

echo $aKlant['iID'] . '<br />' . $aKlant[0] . '<br />';
echo $aKlantAssoc ['iID']. '<br />' . $aKlantAssoc[0];
?>
Dit zal als uitput hebben:
1
1
1
Zoals je kunt zien, is $aKlant['iID'] hetzelfde als $aKlant[0], maar $aKlantAssoc[0] bestaat niet eens. Overigens zal $aKlant['sName'] hetzelfde zijn als $aKlant[1], en $aKlant['iKrediet'] hetzelfde als $aKlant[2].

mysql_result()

Omdat het onhandig is om altijd een array te maken als je maar kolom nodig hebt, hebben we ook de functie mysql_result(). Hier een voorbeeld:
<?php
$sHostname = 'localhost'; //Is meestal localhost
$sUsername = 'username';
$sPassword = 'xxxx';
$sDatabase = '';
$rsConnection = mysql_connect($sHostname, $sUsername, $sPassword);
mysql_select_db($sDatabase, $rsConnection);
$rsSQL = mysql_query('SELECT * FROM `tblKlanten` WHERE `iID` = \'1\' LIMIT 1');
$sID = mysql_result($rsSQL, 0, 0);
$sName = mysql_result($rsSQL, 0, 1);
$iKrediet = mysql_result($rsSQL, 0, 2);
?>
Let op! De telling begint altijd bij 0, in plaats van bij 1!

Andere delen

  1. Inleiding
  2. SELECT, UPDATE, INSERT en DELETE
Copyright © 2011 - Php-leren.nl