Cómo usar mysql_result en PHP 7 o PHP 8
Esta mañana un cliente me avisó de un error cuando intentaba descargar unas facturas. Esas facturas están guardas en un BLOB en una base de datos a las que se accede para luego mostrarlas al usuario.
¿Qué ha pasado? Pues que hace tiempo actualizaron en su servidor PHP de 5.6 a 7.x o diría que ya a 8.x y claro, mirando el código se usaba la función mysql_result que básicamente lo que hace es leer el dato de una celda en concreto de una consulta SQL.
¿Qué ocurre? Que esa función no tiene alternativa directa en mysqli, la extensión para MySQL/MariaDB que sí es compatible con versiones modernas de PHP así que nada, con este pequeño código he vuelto a incluir la compatiblidad:
if (!function_exists('mysql_result')) {
function mysql_result($result, $number, $field=0) {
mysqli_data_seek($result, $number);
$row = mysqli_fetch_array($result);
return $row[$field];
}
}
Así que nada, con esto, listo y a funcionar. Básicamente se mueve el registro que ofrece $result hasta la posición que quieras marcada por $number con mysqli_data_seek, se pasa el contenido a un array PHP con mysqli_fetch_array y se devuelve el resultado de la celda que queremos.
Tres líneas donde antes había una, pero quien haya diseñado el módulo mysqli tendrá sus motivos para haber quitado esa función y no ofrecer un sustituto.