El artículo de Remy Porter para la serie CodeSOD de The Daily WTF, publicado el 6 de octubre de 2026, revisa código que DJ escribió para su primer proyecto web remunerado. DJ tenía 19 años y acababa de empezar a aceptar trabajos de desarrollo web por una tarifa baja. La función debía seleccionar contenido de la base de datos para un banner situado a la derecha. Desde entonces DJ ha aprendido mucho, pero la función antigua seguía disponible.
<?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 rutina ejecuta `SELECT * FROM rightside` mediante `$sql->query` y recorre los resultados con `$sql->objects('',$query)`. Usa cada `id` como clave y valor de un array disperso. También guarda el ID más alto en `$max`, aunque `SELECT *` devuelve más columnas que esa. Después genera un número con `rand(0,$max)` y lo busca en el array usando `foreach`. Si no encuentra coincidencia, vuelve a generar otro número hasta acertar con un ID existente. La consulta final, `SELECT * FROM rightside WHERE id = ".$rand`, se construye mediante concatenación de cadenas.
Porter considera deficiente la implementación incluso para los estándares del PHP de principios de los años 2000. También señala a la empresa que contrató por muy poco dinero a un desarrollador sin experiencia. El ejemplo recuerda que el código escrito a los 19 años puede resultar incómodo con el paso del tiempo. Porter no cree que DJ deba expiar nada. La historia deja una lección para programadores y empresas.




Comentarios
Aún no hay comentarios — escribe el primero.
Inicia la conversación
Sin cuenta ni contraseña — introduce tu correo y te enviamos un enlace de acceso de un solo uso. ¿Primera vez? Todo se configura automáticamente.
Tu valoración se aplicará automáticamente al iniciar sesión.
Revisa tu bandeja de entrada
Hemos enviado un enlace de acceso a …. Ábrelo en este dispositivo — esta pestaña te conectará automáticamente.
¿No llega nada? Mira en la carpeta de spam — y marca el correo como «No es spam» para que la próxima vez llegue directo.