10.1 Verbindingen
Voordat we gegevens uit een database kunnen gebruiken moeten we eerste verbinding maken, PHP heeft standaard een aantal library’s voor de meest gebruikte database pakketen, hier werken we alleen met MySQL. Verbinden met een MySQL database gaat als volgt:
PHP-code:
<?php
$username = 'Martijn';
$password = 'martijn';
$host = 'localhost'; // Deze is meestal localhost ;)
$database = 'mijnDatabase';
/*
Verbinding maken met de database, we ondrukken hier de fout maar vangen
deze later terug op! We maken hier ook gebruik van error-supression, we vangen
eventuele fouten hierna op!
De @mysql_connect kan ook mysql_connect worden indien we onze eigen error
handler gebruiken. Immers bepalen we dan zelf wat we weergeven en wat niet!
*/
$verbinding = @mysql_connect($host, $username, $password);
/*
Als de verbinding mislukt geeft mysql_connect() FALSE terug,
we controleren dus of de verbinding gelukt is
*/
if(!$verbinding)
{
/*
Als het verbinden mislukt is vragen we de juiste foutmelding op met
mysql_error() en drukken we deze af. De uitvoer van het script wordt
gestopt door die()
*/
die ('Er kon geen verbinding gemaakt worden met de database.<br />'.mysql_error());
}
/*
Nu hebben we verbinding met een database-server, voordat we queries kunnen
uitvoeren moeten we eerste nog kiezen welke database we willen gebruiken
*/
if(!mysql_select_db($database, $verbinding))
die('De gevraagde database is niet gevonden');
// Nu kunnen we queries uitvoeren
// Nadat alle queries zijn uitgevoerd moeten we de verbinding terug sluiten
mysql_close($verbinding);
?>
10.2 Query’s uitvoeren
10.2.1 Select
Met een select-query kunnen we gegevens uit een database lezen, de syntax voor MySQL is grotendeels gelijk aan de van Oracle. In dit voorbeeld gaan we alle gegevens uit de tabel ‘users’ lezen en afdrukken:
PHP-code:
<?php
//Verbinding maken, database kiezen ...
$query = 'SELECT * FROM users';
/*
mysql_query() geeft een resultset terug als de query succesvol is uitgevoerd,
en geeft FALSE als de query is mislukt
*/
$resultaat = mysql_query($query, $verbinding);
if(!$resultaat) // Is er een fout opgetreden tijdens het uitvoeren van de query?
die(mysql_error());
/*
Als de query wel succesvol is uitgevoerd kunnen we door het resultaat
loopen met een While-loop, met mysql_nuw_rows() kunnen we het aantal
rijen in de resultset tellen
*/
echo 'Aantal users: ' . mysql_num_rows($resultaat);
while($rij = mysql_fetch_assoc($resultaat))
{
/*
We gaan nu rij per rij de resultset uitlezen; mysql_fetch_assoc geeft voor
iedere rij een assiociatieve array terug, de key is de naam van het veld
(de kolom)en de value is de echte waarde van de huidige rij
*/
echo $rij['name'] . $rij['firstname'] . $rij['city'];
}
// Verbinding terug sluiten
?>
Er zijn ook andere methodes om de rijen uit de resultset te halen, we kunnen in plaats van een associatieve array ook objecten etc opvragen, op php.net staan alle mysql_fetch_* functies.
10.2.2 Insert
Met insert kunnen we gegevens aan een database toevoegen:
PHP-code:
<?php
// Verbinding maken, database kiezen ...
$query = 'INSERT INTO users(name, firstname, street) VALUES ("Croonen", "Martijn", "Komstraat")';
/*
mysql_query() geeft TRUE terug als de query succesvol is uitgevoerd,
en geeft FALSE als de query is mislukt
*/
$resultaat = mysql_query($query, $verbinding);
if(!$resultaat) // Is er een fout opgetreden tijdens het uitvoeren van de query?
die('De user is niet toegevoegd');
echo 'De user is toegevoegd!';
echo 'Aantal nieuwe users: '.mysql_affected_rows($verbinding);
// Verbinding terug sluiten
?>
Met een update kunnen we gegevens die al in een database staan aanpassen:
PHP-code:
<?php
// Verbinding maken, database kiezen ...
$query = 'UPDATE users SET street = "Lomstraat" WHERE name = "Croonen"';
/*
mysql_query() geeft TRUE terug als de query succesvol is uitgevoerd,
en geeft FALSE als de query is mislukt
*/
$resultaat = mysql_query($query, $verbinding);
if(!$resultaat) // Is er een fout opgetreden tijdens het uitvoeren van de query?
die('Het updaten is mislukt');
echo 'Aantal aangepaste users: '.mysql_affected_rows($verbinding);
// Verbinding terug sluiten
?>
Met een delete-query kunnen we gegevens in een database verwijderen:
PHP-code:
<?php
// Verbinding maken, database kiezen ...
$query = 'DELETE FROM users WHERE name = "Croonen"';
/*
mysql_query() geeft TRUE terug als de query succesvol is uitgevoerd,
en geeft FALSE als de query is mislukt
*/
$resultaat = mysql_query($query, $verbinding);
if(!$resultaat) // Is er een fout opgetreden tijdens het uitvoeren van de query?
die('Het verwijderen is mislukt');
echo 'Aantal verwijderde users: '.mysql_affected_rows($verbinding);
// Verbinding terug sluiten
?>
Geschreven door: Martijn Croonen.
Aanpassingen door: Aerts Kurt.