PHP en SQL

CMD FED Y2Q2W6 Lesbrief

Leerdoelen

Uitleg

Doel en gebruik SQL

SQL is een gestandaardiseerde taal die je gebruikt voor de communicatie met een database. Dit doe je met behulp van query's, dit zijn logische statements welke elk een opdracht voor de database bevat. Met behulp van een SQL query kan je bijvoobeeld data uit een relationele database opvragen of de database structuur manipuleren.

De SQL statements zijn grofweg onder te verdelen in twee categorieen; data definition language (DDL) en data manipulation language (DML). DDL gebruik je om de database structuur aan te passen en DML om de data in de database te manipuleren.

Hieronder staat een overzicht van de meest gebruikte SQL statements onderverdeeld in de categorieen:

Data Definition Language

Deze statements gebruik je binnen deze periode als je in PHPMyAdmin de structuur van de database opzet.

Data Manipulation Language

Deze statements gebruik je deze periode binnen je PHP code om de data te manipuleren.

In de vorige les heb je met PHPMyAdmin gewerkt, dit PHP programma maakt ook gebruik van SQL query's om de structuur of data van een database op te vragen of te manipuleren. PHPMyAdmin laat op elke pagina zien welke SQL query het heeft uitgevoerd op de database, je kan PHPMyAdmin dan ook gebruiken als inspiratie voor SQL query's.

PHP en MySQL

In PHP kan je met behulp van de ingebouwde functies een MySQL database aanroepen en manipuleren. Hieronder staat aan de hand van code voorbeelden stap voor stap uitgelegd hoe dit in zijn werk gaat.

Nieuwe test database

  1. Maak met behulp van PHPMyAdmin een nieuwe database aan, genaamd: "school".
  2. Download het volgende SQL bestand hier.
  3. In PHPMyAdmin onder IMPORT kan je deze SQL code importeren in de "school" database.
  4. Na de import heb je een database "school" met een tabel "studenten" gevuld met 53 records.

Connectie maken

Als eerste moet je een verbinding maken met de database, dit gaat als volgt:

<?php
// de waarden voor de verbinding $host = "localhost"; // localhost is je eigen computer $username = "root"; // gebruiker die toegang heeft tot de database $password = ""; // wachtwoord van de gebruiker $database = "school"; // naam van database // maak een verbinding met mysql mysql_connect($host, $username, $password); // kies de juiste database mysql_select_db($database); // er is nu verbinding met de database
?>

Query uitvoeren

Nadat je een verbinding hebt gemaakt, kan je query's gaan uitvoeren op de database. Hieronder een voorbeeld van een eenvoudige SELECT query:

<?php
// er is al verbinding met de database // query die alles selecteerd uit de tabel studenten $query = "SELECT * FROM studenten"; // we voeren de query uit en halen het resultaat op $result = mysql_query($query); // met een loop gaan we door alle records in het resultaat heen while($row = mysql_fetch_array($result)) { // in $row zit nu het record met alle velden // zo kunnen we bijvoorbeeld alle nummers en namen op een rij tonen print($row['nummer'] . ' - ' . $row['naam']); print('<br />'); }
?>

Totaal voorbeeld

De gehele samengevoegde voorbeeld code staat hier.

SELECT

Om data op te halen uit de tabellen van een database, gebruik je het SELECT statement. Het resultaat van dit statement is een lijst(tabel) met de records die aan het statement voldoen.

De basis syntax van een SELECT statement is als volgt:

	SELECT <veld namen>
	FROM <tabel naam>

Om van alle studenten in de tabel de namen en email addressen op te halen geef je de volgende query op:

	SELECT naam, email
	FROM studenten

Als je alle velden wilt ophalen van een tabel gebruik je een * als wildcard, bijvoorbeeld:

	SELECT *
	FROM studenten

Tip: Je kan al je query's goed uitproberen in PHPMyAdmin!

Ingebouwde SQL functie's

MySQL heeft veel ingebouwde functie's om bijvoorbeeld de datum op te vragen of het aantal records te tellen in een tabel.

Om bijvoorbeeld het aantal studenten te tellen gebruik je de volgende query:

	SELECT COUNT( * ) AS aantal_studenten
	FROM studenten

WHERE

Als je specifieke eisen hebt waaraan de data moet voldoen moet je deze via een WHERE statement meegegeven aan de database. Zo kan je bijvoorbeeld zoeken op een specifieke naam of een ID uit de database.

De basis syntax van een WHERE statement is als volgt:

	SELECT <veld namen>
	FROM <tabel naam>
	WHERE <conditie voor record selectie>

Om de student met studentnummer 798577 op te vragen, geef je de volgende query op:

	SELECT *
	FROM studenten
	WHERE nummer = '798577'

Als je wilt zoeken op de studenten waarvan het studentnummer beging met 79 gebruik je het LIKE statement in combinatie met de wildcard %, bijvoorbeeld:

	SELECT *
	FROM studenten
	WHERE nummer LIKE '79%'

ORDER BY

Om de resultaten van je query te sorteren maak je gebruik van het ORDER BY statement.

De basis syntax van een ORDER BY statement is als volgt:

	SELECT <veld namen>
	FROM <tabel naam>
	ORDER BY <veld naam>

Je kan de resultaten oplopend (ASC) of aflopend (DESC) sorteren.

Om de resultaten te oplopend (a-z) sorteren op naam, geef je de volgende query op:

	SELECT *
	FROM studenten
	ORDER BY naam ASC

Om de resultaten aflopend (z-a) te sorteren op naam, geef je de volgende query op:

	SELECT *
	FROM studenten
	ORDER BY naam DESC

GROUP BY

Om de resultaten van je query te groeperen maak je gebruik van het GROUP BY statement.

De basis syntax van een GROUP BY statement is als volgt:

	SELECT <veld namen>
	FROM <tabel naam>
	GROUP BY <veld naam>

Om de resultaten te groeperen op klas, geef je de volgende query op:

	SELECT *
	FROM studenten
	GROUP BY klas

Dit kan bijvoorbeeld erg handig zijn als je het aantal studenten per klas wilt tellen met behulp van COUNT, zoals:

	SELECT klas, COUNT(*) as aantal
	FROM studenten
	GROUP BY klas

LIMIT

Om het aantal records wat wordt terug gegeven na het uitvoeren van een query te beperken maak je gebruik van het LIMIT statement. Dit kan erg handig zijn als je bijvoorbeeld wilt kunnen bladeren door pagina's met nieuws items of een top 10 wilt tonen.

De basis syntax van een LIMIT statement is als volgt:

	SELECT <veld namen>
	FROM <tabel naam>
	LIMIT <index>, <aantal>

Als je de eerste 10 studenten wilt ophalen geef je de volgende query op:

	SELECT *
	FROM studenten
	LIMIT 0, 10

Als je studenten nummer 11 t/m 20 wilt ophalen geef je de volgende query op:

	SELECT *
	FROM studenten
	LIMIT 10, 10

INSERT INTO

Om een nieuw record aan de tabel toe te voegen maak je gebruik van het INSERT INTO statement.

De basis syntax van een INSERT INTO statement is als volgt:

	INSERT INTO <tabel naam> (<veld namen>)
	VALUES (<veld waarden>)

Om een nieuwe student toe te voegen geef je de volgende query op:

	INSERT INTO studenten (naam, nummer, email, klas)
	VALUES ('Marta Zwart', '808080', '0808080@student.hro.nl', 'cmd2z')

Omdat het ID veld op 'auto increment' staat hoeven we dit niet mee te geven, een nieuwe student krijgt automatisch een nieuw ID toegewezen.

UPDATE

Om de data van een of meerdere bestaande records in een tabel te wijzigen gebruik je het UPDATE statement.

De basis syntax van een UPDATE statement is als volgt:

	UPDATE <tabel naam>
	SET <veld namen = waarden>

Om alle studenten in de klas cmd3a te zetten geef je de volgende query op:

	UPDATE studenten
	SET klas = 'cmd3a'

Om alleen de student met studentnummer 798577 in de klas cmd3a te zetten geef je de volgende query op:

	UPDATE studenten
	SET klas = 'cmd3a'
	WHERE nummer = '798577'

DELETE

Om records uit een tabel te verwijderen gebruik je het DELETE statement.

De basis syntax van een DELETE statement is als volgt:

	DELETE FROM <tabel naam>

Om alle studenten uit de tabel te verwijderen geef je de volgende query op:

	DELETE FROM studenten

Om alleen de student met studentnummer 798577 te verwijderen geef je de volgende query op:

	DELETE FROM studenten
	WHERE nummer = '798577'