Tutoriales

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.

F. Javier Carazo Gil

Cofundador de CODECTION, empresa especializada en WordPress, autor de un libro sobre WordPress (el primero en español) y multitud de artículos (en medios físicos y virtuales) sobre el tema. Participa en la comunidad WordPress de forma activa siendo parte del equipo organizador de la WordPress Meetup de Córdoba, dando charlas en diferentes WordCamp y siendo autor y coautor de multitud de plugins libres y premium para WordPress de gran éxito.

Compartir
Publicado por
F. Javier Carazo Gil
Etiquetas: mysqlphp

Entradas recientes

432 CVEs

5 días hace

Anti-IA

2 semanas hace

Memoria

3 semanas hace

Mal uso

4 semanas hace

Precio de la RAM

1 mes hace

AUR

1 mes hace