SQL Beginnershandleiding

  1. Inleiding
  2. De eerste tabel
  3. De database benaderen vanuit PHP
  4. PDO: De database benaderen vanuit PHP
  5. Invoegen van records
  6. PDO: Invoegen van records
  7. Selecteren van records
  8. PDO: Selecteren van records
  9. Wijzigen van records
  10. PDO: Wijzigen van records
  11. Verwijderen van records
  12. PDO: Verwijderen van records
  13. Sleutels en constraints
  14. Selecteren uit meerdere tabellen: JOINS
  15. Werken met data en tijden
  16. Aggregate functies en GROUP BY
  17. Debuggen: het oplossen van SQL fouten
  18. Slotwoord en referenties
  19. Reacties op deze tutorial

De database benaderen vanuit PHP

Om de database vanuit PHP te benaderen hebben we een groot aantal mogelijkheden tot onze beschikking. De betere manieren om met een database te communiceren zijn bijvoorbeeld via een 'database abstraction layer' zoals PDO of door in het specifieke geval van MySQL gebruik te maken van de MySQLi extensie binnen PHP.

Helaas zijn er op moment van schrijven van deze tutorial nog heel veel hosts die (een van) eerder genoemde methoden niet ondersteund. Omdat ik een tutorial wil schrijven waar iedereen mee uit de voeten kan, zal ik in deze voorbeelden gebruik maken van de mysql_* functies die PHP ons biedt.

Opmerking: de mysql_* functies worden vanaf PHP6 uitgefaseerd en zullen daarna voorgoed verdwijnen. Als je nieuwe scripts schrijft doe je er verstandig aan om voor bijvoorbeeld PDO of MySQLi te kiezen.

Voor meer informatie over de betere manieren kun je terecht in een van onderstaande tutorials:

Toevoeging PDO voorbeelden (23-01-2008)
Aangezien zoals gezegd de mysql_* functies vanaf PHP6 uitgefaseerd worden, heb ik besloten om van elk gegeven PHP voorbeeld, die de basishandelingen van het werken met de database laten zien, ook de PDO variant in deze tutorial op te nemen. Deze voorbeelden met het gebruik van PDO zijn te vinden in een extra hoofdstuk dat volgt op het hoofdstuk waarin de voorbeelden gegeven zijn. De hoofdstukken zijn gekenmerkt door het stukje 'PDO:' in de titel.

Deze hoofdstukken zijn van een iets hoger niveau dan de rest van de tutorial. Als je denkt dat je er nog niet aan toe bent, kun je ze gerust overslaan. Ze vormen enkel een aanvulling en zijn geen essentieel onderdeel van de handleiding.

Verbinden met de database en MySQL in ANSI mode zetten
Om in PHP verbinding te maken met de database, gebruiken we het volgende stukje code:
Code: db_config.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$db 
= array (
    
'host' => 'localhost',
    
'user' => 'root',
    
'pass' => '',
    
'dbname' => 'test'
);

if(!
mysql_connect($db['host'], $db['user'], $db['pass']))
{
    
trigger_error('Fout bij verbinden: '.mysql_error());
}
elseif(!
mysql_select_db($db['dbname']))
{
    
trigger_error('Fout bij selecteren database: '.mysql_error());
}
else
{
    
$sql "SET SESSION sql_mode = 'ANSI,ONLY_FULL_GROUP_BY'";
    if(!
mysql_query($sql))
    {
        
trigger_error('MySQL in ANSI niet mogelijk');
    }
}
?>

Dit scriptje slaan we op als db_config.php en gebruiken we overal waar we een database verbinding nodig hebben. Wat we feitelijk doen is allereerst een array $cfg aanmaken die een viertal gegevens bevat:
  • host - De hostname waar de database server te vinden is. Standaard is dat localhost.
  • user - De gebruikersnaam om in te loggen op de database server.
  • pass - Het bijbehorende wachtwoord.
  • dbname - De naam van de database waarmee we willen werken

Verander deze gegevens dus even zodat ze kloppen voor jouw eigen situatie.

Met mysql_connect() proberen we een verbinding te maken met de database, als dat niet lukt geven we een foutmelding met behulp van trigger_error(). Vervolgens selecteren we met behulp van mysql_select_db() de database die we willen gaan gebruiken.

Tenslotte voeren we een sql query uit die MySQL in de ANSI mode zet. Want zoals ik in de inleiding al zei, neemt MySQL het niet zo nauw met de ANSI standaard. Gelukkig kunnen we MySQL op deze manier dwingen om zich meer aan die standaard te houden.

Op elke pagina waar we vervolgens een database verbinding nodig hebben, plaatsen we:
Code
1
2
3
<?php
require_once 'db_config.php';
?>

Uitvoeren van queries
Voor het uitvoeren van queries zal ik in alle voorbeelden een vaste syntax in PHP gebruiken. Deze ziet er als volgt uit:
Code
1
2
3
4
5
6
7
8
<?php
$sql 
"";

if(!
$res mysql_query($sql))
{
    
trigger_error(mysql_error().'<br />In query: '.$sql);
}
?>

In de variabele $sql zetten we de query die we willen uitvoeren. Vervolgens voeren we met mysql_query() deze query uit en controleren we of deze query gelukt is. Als dat niet het geval is, gebruiken we trigger_error() om een foutmelding te geven. Het is belangrijk om in die foutmelding zowel de foutmelding van MySQL, op te halen met mysql_error(), en de gebruikte query weer te geven. Dat maakt het debuggen een stuk eenvoudiger.

Dit is de basis waarmee we in PHP gaan werken. We zullen zien dat dit stukje script telkens weer in onze code terugkomt.

Vorige Volgende