Wilt u zelf gegevens uit een database lezen of wegschrijven, dan is PDO tegenwoordig de aanbevolen manier.
De verbinding
<?php
$host = 'localhost';
$db = 'gebruiker_database';
$user = 'gebruiker_dbuser';
$pass = 'het-wachtwoord';
try {
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
]);
} catch (PDOException $e) {
error_log($e->getMessage());
exit('Er ging iets mis.');
}De databasegegevens haalt u uit DirectAdmin bij MySQL-beheer. Op onze servers is de host altijd localhost.
Gegevens ophalen
$stmt = $pdo->prepare('SELECT naam, email FROM klanten WHERE plaats = ?');
$stmt->execute(['Enschede']);
foreach ($stmt as $rij) {
echo htmlspecialchars($rij['naam']);
}Waarom u altijd prepare gebruikt
Dit is het belangrijkste punt van dit artikel. Plakt u invoer van een bezoeker rechtstreeks in uw zoekopdracht, dan kan iemand daar databasecommando’s in verstoppen en uw hele database uitlezen of wissen. Dat heet SQL-injectie en het is nog altijd een van de meest voorkomende manieren waarop websites gehackt worden.
Met prepare en vraagtekens worden de waarden apart doorgegeven en kan dat niet gebeuren. Doe dit altijd, ook bij invoer waarvan u denkt dat die veilig is.
En bij het tonen
Gebruik htmlspecialchars bij het tonen van gegevens. Anders kan iemand die eerder scriptcode in uw database kreeg, die bij elke bezoeker laten uitvoeren.
Toon nooit de foutmelding zelf
Schrijf fouten naar het log en toon de bezoeker een neutrale melding. Een databasefout op het scherm verraadt uw databasenaam en tabelstructuur.