PHP-lessen - les 3 - Werken met MySQL-databases.
Misschien denk je dat het te vroeg is om in de derde les meteen met MySQL-databases te gaan werken. Maar geloof me, dat is niet zo. PHP leren als webprogrammeertaal zonder te leren werken met databases is hetzelfde als een computer hebben zonder internet. Ja, je kunt ermee werken, maar je hebt geen manier om informatie te krijgen. Dus laten we onze tanden op elkaar zetten en beginnen met het schrijven van SQL-query’s naar een database — zelfs als we nog niets weten over de SQL-taal.
SQL (Structured Query Language — "taal voor gestructureerde query’s") is een universele computertaal die wordt gebruikt voor het maken, wijzigen en beheren van gegevens in relationele databases. SQL is gebaseerd op het werken met records in tabellen.
PHP kan werken met veel verschillende databases: MySQL, PostgreSQL, Oracle en vele andere. Wij zullen werken met MySQL, omdat de combinatie PHP + MySQL zeer populair is bij het bouwen van websites. Bovendien helpt het leren werken met MySQL je later ook bij andere databases, omdat SQL een universele taal is en de syntaxis vrijwel overal hetzelfde is.
MySQL is een gratis databasesysteem (DBMS). MySQL is eigendom van Oracle Corporation, dat het verwierf door de overname van Sun Microsystems, het bedrijf dat verantwoordelijk was voor de ontwikkeling en ondersteuning. MySQL wordt verspreid onder de GNU General Public License of onder een commerciële licentie.
We zullen nog veel lessen wijden aan SQL zelf. Maar laten we beginnen met iets eenvoudigs — hoe we verbinding maken met een database. Hiervoor maken we een extra methode aan in onze klasse simpleCMS:
public function connectDB() { }
Dit stelt ons in staat om vanuit elke plek in de code, waar al een object van onze klasse aanwezig is, een verbinding met de database te maken. Dat is erg handig.
We hebben ook variabelen nodig voor de MySQL-server, de databasegebruiker en de databasenaam:
class simpleCMS { public $host = 'localhost'; public $username = 'root'; public $password = '';
We definiëren deze standaardwaarden voor het geval we vergeten ze elders te configureren. Ik gebruik Denwer, daarom heb ik deze MySQL-instellingen. Als je een hostingprovider of een eigen server gebruikt, moet je je eigen MySQL-gebruikersgegevens gebruiken.
Nu gebruiken we de functie mysql_connect() om verbinding te maken met MySQL:
public function connectDB() { $link = mysql_connect($this->host, $this->username, $this->password); if (!$link) { die('Verbindingsfout: ' . mysql_error()); } return $link; }
Laten we uitleggen hoe de functie mysql_connect() werkt. Deze functie verwacht drie parameters: de naam van de databasehost, de gebruikersnaam en het wachtwoord. Daarna volgt de functie die(), die wordt uitgevoerd als de verbinding mislukt — in dat geval wordt een foutmelding weergegeven. De variabelen $this->host, $this->username en $this->password verwijzen naar de eigenschappen van de klasse zelf. Aangezien we ze standaard hebben ingesteld, hoeven we ze niet expliciet in de methode connectDB() te definiëren.
De functie mysql_connect() retourneert een resourcevariabele $link — net als een bestand- of mapresource. Daarom moeten we, wanneer we klaar zijn, de verbinding sluiten om geheugen vrij te maken. De melding bij een succesvolle verbinding kunnen we weglaten.
Laten we nu onze methode aanroepen aan het begin van het bestand index.php, direct nadat we het klassebestand hebben ingeladen:
$obj = new simpleCMS(); // maak een object van de klasse $db_connection = $obj->connectDB(); // maak verbinding met de database
Overal waar we met de database moeten werken, zullen we het klassebestand inladen, een object aanmaken en vervolgens de verbindingsmethode aanroepen. Zoals je ziet, is werken met databases helemaal niet moeilijk.
En net zoals we een verbinding openen, moeten we die aan het einde ook sluiten. We sluiten de verbinding met de functie mysql_close(). Ik maak nog geen aparte methode om de verbinding te sluiten (dat zou je kunnen doen als het nodig wordt), maar ik voeg gewoon de volgende regel toe:
include_once('class/simpleCMS.php'); // laad het klassebestand in $obj = new simpleCMS(); // maak een object van de klasse $db_connection = $obj->connectDB(); // maak verbinding // enige interactie met de database mysql_close($db_connection); // sluit de verbinding
Ik denk dat dit duidelijk genoeg is. In de volgende les zullen we SQL-query’s schrijven voor de MySQL-database. Als iets onduidelijk blijft, laat dan een reactie achter.