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) |
|---|
| 1 | Jan Jansen | 300 |
| 2 | Bart de Groot | -50 |
| 3 | Sven Zonneveld | 0 |
Deze query zal het volgende resultaat geven:
| iID | sName | iKrediet |
|---|
| 2 | Bart 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
- Inleiding
- SELECT, UPDATE, INSERT en DELETE