Home Ontwerp je site PHP Basiscursus PHP 11/12 : MySQL

Basiscursus PHP 11/12 : MySQL

MySQL is een taal die het mogelijk maakt om met (MySQL)databases te communiceren. De meeste PHP websites gaan hand in hand met MySQL omdat het makkelijk, gebruiksvriendelijk en gratis is. (net zoals PHP)

Opzetten van een MySQL-database

Voordat we een database kunnen gebruiken, moeten we die eerst aanmaken, en we moeten de gegevens weten voor in te loggen in het database-systeem. Dit verschilt van host tot host, maar meestal kan je via www.domein.com/phpmyadmin (of via je beheerderpaneel) aan phpmyadmin geraken, waar je alles kan aanpassen.

Meestal kan je dan vanaf het beginscherm een database aanmaken, soms moet dit via het beheerderspaneel van je host gebeuren. De logingegevens van de database zijn meestal de logingegevens van je host (of die van een MySQL-account als je die kan aanmaken in je beheerderspaneel).

Aanmaken van een connectie

Voordat we ook maar kunnen beginnen met gegevens uit te wisselen met een database, moeten we een connectie aanmaken, en een database selecteren.

<?php
mysql_connect("localhost","gebruikersnaam","paswoord"); // mysql_connect("plaatsvandatabase","loginaanm","paswoord");
mysql_select_db("testdatabase"); // mysql_select_db("naamvandatabase");
?>

Database-structuur

Voordat we gegevens van een database manipuleren, moeten we eerst de database-structuur een beetje leren kennen. Een MySQL-database kan bestaan uit verschillende tabellen, die elk weer verschillende kolommen bevatten. Per tabel kan je records (rijen) toevoegen, die gegevens bevatten.

Database: testdatabase
Tabel: Werknemers
WerknemerID (integer)Voornaam (varchar)Familienaam (varchar)
1JosVermeulen
2KamielSpiessens
Tabel: Klanten
KlantIDVoornaamFamilienaam
1GastonBergmans
2ChrisVan Den Durpel

Dit is een voorbeeld van een database, met 2 tabellen (Werknemers en Klanten), die elk 3 kolommen bevatten (een identifier (ID), Voornaam, Familienaam). Iedere tabel moet ten minste 1 identifier-kolom hebben. Meestal noemen we die ID.

Die kolom moet een 'auto_increment' meekrijgen, en moet ingesteld worden als primary key (in phpmyadmin te vinden bij extra, en het sleutel-icoontje wanneer je een nieuwe tabel maakt). Het nut van die identifier is dat men zo geen uniek waarden heeft (records die exact dezelfde waarden hebben), zodat we steeds 1 bepaalde record kunnen selecteren indien nodig.

Integer en varchar zijn voorbeelden van datatypes. Zo zal je een identifier altijd het datatype 'integer' moeten meegeven, omdat het een positief geheel getal is. Een kort stuk tekst zal meestal het datatype varchar (of text) meekrijgen, omdat die kolom dan tekst kan bevatten.

Gegevens invoegen

<?php
mysql_connect("localhost","gebruikersnaam","paswoord"); // mysql_connect("plaatsvandatabase","loginaanm","paswoord");
mysql_select_db("testdatabase"); // mysql_select_db("naamvandatabase");

mysql_query("INSERT INTO Werknemers (Voornaam, Familienaam) VALUES ('Firmin', 'Crets')");
?>

Eerst maken we een connectie met de database, en dan voeren we een query uit via de functie mysql_query(). Een query is simpelweg gezegd, een interactie met de database. In deze query voegen we in de tabel Werknemers een nieuwe record toe, en we geven waarden mee voor de kolommen Voornaam en Familienaam.

De reden waarom we de kolom WerknemerID niet toevoegen aan de query is dat die kolom 'auto_increment' meekrijgt, waardoor de database automatisch de identifier (WerknemerID) optelt.

De database ziet er als volgt uit:

Database: testdatabase
Tabel: Werknemers
WerknemerIDVoornaamFamilienaam
1JosVermeulen
2KamielSpiessens
3FirminCrets
Tabel: Klanten
KlantIDVoornaamFamilienaam
1GastonBergmans
2ChrisVan Den Durpel

Gegevens opvragen

<?php
mysql_connect("localhost","gebruikersnaam","paswoord"); // mysql_connect("plaatsvandatabase","loginaanm","paswoord");
mysql_select_db("testdatabase"); // mysql_select_db("naamvandatabase");

$werknemerqry = mysql_query("SELECT Voornaam, Familienaam FROM Werknemers WHERE Familienaam = 'Crets'");

while($werknemers = mysql_fetch_object($werknemerqry)){
echo "Voornaam: ".$werknemers->Voornaam."Familienaam: ".$werknemers->Familienaam."<br />";
}
?>

Gegevens opvragen in MySQL is niet zo moeilijk. De basis is altijd hetzelfde: "SELECT kolommen FROM tabel WHERE kolom = 'waarde'"

Je selecteert de kolommen Voornaam en Familienaam (SELECT * FROM ... om alle kolommen uit een tabel te selecteren), en vervolgens vernauw je je resultaten via een WHERE-clausule (WHERE kolom gelijk is aan een waarde), zodat je bij deze query alle records uitkomt waar de familienaam gelijk is aan Crets.

De query stuurt dan gegevens terug, die we dan in een mysql_fetch_object() kunnen opvangen (er zijn meer methodes, zie de extra documentatie onderaan de pagina). Wanneer je deze methode gebruikt (gegevens opvangen via een while-statement), zorg dan dat je de query nooit opvraagt binnenin de while-statement, dit zal er voor zorgen dat je script blokkeert.

Gegevens bewerken

<?php
mysql_connect("localhost","gebruikersnaam","paswoord"); // mysql_connect("plaatsvandatabase","loginaanm","paswoord");
mysql_select_db("testdatabase"); // mysql_select_db("naamvandatabase");

mysql_query("UPDATE Klanten SET Familienaam = 'Berghmans' WHERE Familienaam = 'Bergmans' AND Voornaam = 'Gaston'");

?>

Wanneer we gegevens moeten bewerken die al in de database zitten (zoals profielen updaten, berichten op een forum aanpassen, ...) dan gebruiken we de UPDATE-query. We updaten de kolom Klanten, en we vervangen (SET) de Familienaam waar (WHERE) de Familienaam gelijk is aan 'Bergmans' en (AND) de Voornaam gelijk is aan 'Gaston'.

De database ziet er nu zo uit:

Database: testdatabase
Tabel: Werknemers
WerknemerIDVoornaamFamilienaam
1JosVermeulen
2KamielSpiessens
3FirminCrets
Tabel: Klanten
KlantIDVoornaamFamilienaam
1GastonBerghmans
2ChrisVan Den Durpel

Gegevens verwijderen

<?php
mysql_connect("localhost","gebruikersnaam","paswoord"); // mysql_connect("plaatsvandatabase","loginaanm","paswoord");
mysql_select_db("testdatabase"); // mysql_select_db("naamvandatabase");

mysql_query("DELETE FROM Klanten WHERE Familienaam = 'Berghmans'");

?>

Gegevens verwijderen is al even simpel als gegevens selecteren. Je verwijdert (DELETE FROM) gegevens van de tabel Klanten waar (WHERE) de Familienaam gelijk is aan Berghmans.

De database ziet er nu zo uit:

Database: testdatabase
Tabel: Werknemers
WerknemerIDVoornaamFamilienaam
1JosVermeulen
2KamielSpiessens
3FirminCrets
Tabel: Klanten
KlantIDVoornaamFamilienaam
2ChrisVan Den Durpel

Een connectie sluiten

<?php
mysql_connect("localhost","gebruikersnaam","paswoord"); // mysql_connect("plaatsvandatabase","loginaanm","paswoord");
mysql_select_db("testdatabase"); // mysql_select_db("naamvandatabase");

// query's enz...
mysql_close(mysql_connect("localhost","gebruikersnaam","paswoord"); // mysql_connect("plaatsvandatabase","loginaanm","paswoord")); // sluiten van de connectie

?>

Ten slotte sluiten we een connectie af. Dit doen we door de functie mysql_close() te gebruiken, en in de functie de connectie te specifiëren die we willen sluiten.

Wat hebben we vandaag geleerd?

  1. MySQL is een databasesysteem
  2. MySQL wordt veel gebruikt in PHP-applicaties
  3. Voordat je gegevens van een database kan manipuleren, moet je eerst een connectie aanmaken

Extra documentatie

Dit was de basis van MySQL, er zijn veel meer functies en mogelijkheden dat MySQL te bieden heeft, zoals onder andere het optellen van waarden in een tabel, unieke waarden selecteren, groeperen van gegevens enz... Als je onderstaande links volgt, kom je er meer over te weten.


Ga naar het laatste deel van de PHP basiscursus : Basiscursus PHP 12/12 : Beveiliging


Auteur : Skwizz


2 + 4 =
 

GOOGLE adsense