Hallo,

Voordat ik een query uitvoer, check ik met mysqli_ping of er nog verbinding is met de database, puur omdat ik dit gewend ben te doen. Maar is dat wel daadwerkelijk nodig? Stel ik wil enkel iemands gebruikersnaam weergeven, hoe kun je dit dan zo efficiënt mogelijk doen? Op dit moment heb ik de volgende code:


<?php
if (mysqli_ping($mysqli))
{
	$query =
	"
		SELECT username
		FROM user
		WHERE u_id = " . mysqli_real_escape_string($mysqli, $_SESSION["user_id"]) . "
	";
	
	$result = mysqli_query($mysqli, $query);
	
	if (!(mysqli_errno($mysqli)))
	{
		$user = mysqli_fetch_assoc($result);
?>
			<p>Je bent ingelogd als <strong><?= htmlspecialchars($user["username"]); ?></strong>.</p>
<?php
	}
	else
	{
?>
			<p>Je bent ingelogd als <strong>Onbekend</strong>.</p>
<?php
	}
}
else
{
?>
			<p>Je bent ingelogd als <strong>Onbekend</strong>.</p>
<?php
}
?>


Echter vind ik dit persoonlijk nogal een overkill aan fout afhandeling.

Hoe pakken jullie dit aan?
Foutafhandeling kan zowel exceptions zijn,als een simpele if-else-statement. En uiteraard ben ik bewust van wat je aan de gebruiker meldt aan foutmeldingen. Zo ga ik heus geen database-details doorgeven en houd het bij een 'technische storing aan onze kant'. Ikzelf gebruik gewoon exceptions in een extended class met een gekloonde query-functie op de MySQLi-classe. Bevalt mij uitstekend.
In test-opstellingen toon ik gewoon wel de foutmeldingen.

Mogelijk kan je bij de foutmelding een hash tonen die intern verwijst naar de error in de log. Mocht een bezoeker zo aardig zijn om de error door te geven aan de techneuten, dan heeft hij voldoende aan de hash, zonder de betekenis te weten, maar de beheerder kunnen dan zo zien bij welke error het hoort.

Reageren