Databases
Er zijn 3 manieren in php om te communiceren met een database. In dit materiaal ga ik uit van het MySQLi object. Let er dus goed op dat als je uitleg en voorbeelden op het internet zoekt je wel dezelfde techniek gebruikt.
Verbinden
<?php
// Declareer variabelen
$servername = "localhost";
$username = "username";
$password = "password";
$database = "database";
// Maak verbinding
$conn = new mysqli($servername, $username, $password, $database);
// Controleer of verbinding is gelukt
if ($conn->connect_error) {
die("Connectie mislukt: " . $conn->connect_error);
}
echo "Connectie gemaakt";
// Verbinding verbreken
$conn->close();
?>
Je verbinding is nu actief in de $conn variabele. De laatste regel sluit de verbinding. Dat moet je altijd doen. In een website waar veel gebruikers zijn kan het problemen geven als je de databaseverbinding niet weer netjes sluit. Let er op dat je de verbinding pas sluit als je geen query's meer wilt uitvoeren. Dus aan het einde van de code.
$sql = "INSERT INTO tabel (naam, leeftijd) VALUES ('Jan', 21)";
if ($conn->query($sql) === TRUE) {
echo "Jan is succesvol toegevoegd.";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
Prepare
Hieronder zie je het gebruik van MySQL Prepared instructie. Deze techniek is heel bruikbaar om sql injecties te voorkomen.
We gaan er van uit dat je een actieve databaseverbinding hebt.
$stmt = $conn->prepare("INSERT INTO gebruikers (naam, email) VALUES (?, ?, ?)");
$stmt->bind_param("ss", $naam, $email);
// hier ga je pas de variabelen toewijzen en de query uitvoeren, dat kan je meer keren doen.
$naam = "Mijn Naam";
$email = "email@mijnnaam.nl";
$stmt->execute();
// let op dat je zowel de prepare als de connectie sluit
$stmt->close();
$conn->close();
Let op het commando bind_param, het eerste attribuut verteld welk filter er op de variabelen moet worden toegepast. Het is nu twee keer een 's'. Dat staat voor het type string. Dus zowel de eerste als tweede variabele is hier een string. Je kan ook kiezen voor:
- i = integer
- d = double
- s = string
- b = blob