Dans un article de la série CodeSOD publié par The Daily WTF le 6 octobre 2026, Remy Porter examine du code écrit par DJ pour son premier projet web rémunéré. DJ avait 19 ans et acceptait alors des missions de développement web atypiques pour un faible tarif horaire. La fonction devait choisir du contenu en base pour une bannière placée à droite. DJ a beaucoup appris depuis cette époque, mais cette ancienne fonction existe toujours.

random-banner.php
<?php
$int = array();
$query = $sql->query("SELECT * FROM rightside");
while($row = $sql->objects('',$query)) {
    $int[$row->id] = $row->id;
    if ($row->id > $max) { $max = $row->id; }
}
$x = false;
while ($x == false) {
    $rand = rand(0,$max);
    foreach ($int as $thing) {
        if ($thing == $rand) { $x = true; }
    }
}
$query = $sql->query("SELECT * FROM rightside WHERE id = ".$rand);

La routine exécute `SELECT * FROM rightside` avec `$sql->query`, puis parcourt les résultats grâce à `$sql->objects('',$query)`. Elle place chaque `id` comme clé et comme valeur dans un tableau creux. La routine mémorise aussi le plus grand identifiant dans `$max`, sans utiliser les autres colonnes renvoyées par `SELECT *`. Le programme tire ensuite un nombre avec `rand(0,$max)` et le recherche dans le tableau au moyen de `foreach`. Les tirages continuent jusqu’à obtenir un identifiant présent. La requête finale, `SELECT * FROM rightside WHERE id = ".$rand`, est assemblée par concaténation de chaînes.

Porter juge cette implémentation mauvaise, même selon les standards du PHP des débuts des années 2000. Il attribue aussi une part du problème à l’entreprise qui a recruté un débutant pour presque rien. Le cas rappelle aux développeurs que leur code écrit à 19 ans peut devenir difficile à regarder. Porter estime que DJ n’a pas à faire pénitence. L’épisode doit servir de leçon aux programmeurs comme aux employeurs.