viernes, 4 de noviembre de 2016

PHP: Uso de mysqli

mysqli es una extensión de PHP que permite acceder a ciertas funciones disponibles a partir de MySQL 4.1 que no se pueden emplear con la extensión tradicional mysql. mysqli proporciona una mayor velocidad, una mayor seguridad, un interfaz procedural u orientado a objetos y el empleo del nuevo protocolo binario de MySQL 4.1 que permite ciertas funciones como la ejecución de sentencias preparadas.

Si se emplea el interfaz orientado a objetos, el programador puede desarrollar sus propias clases de acceso a la base de datos que hereden de las proporcionadas por la extensión, lo que permite un mayor control y adecuación a las necesidades de cada uno.

Las principales funciones que se emplean en el interfaz procedural son:
  • mysqli_connect(servidor, usuario, contraseña, baseDatos): devuelve un identificador de recurso o false si la conexión falla.
  • mysqli_connect_error(): devuelve una descripción del último error de conexión.
  • mysqli_query(identificador, sentencia): ejecuta una sentencia SQL.
  • mysqli_error(identificador): devuelve una descripción del último error.
  • mysqli_fetch_assoc(resultado): devuelve la siguiente fila en el resultado o false en caso contrario.
  • mysqli_free_result(resultado): libera la memoria empleada por un resultado.
  • mysqli_close(identificador): cierra la conexión con una base de datos.
El siguiente ejemplo muestra como se realiza un acceso a una base de datos mediante el interfaz procedural; se emplea el operador de control de errores “@” para evitar que se muestren en la página posibles mensajes de error:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Prueba de SELECT y mysqli procedural</title>
    </head>
    <body>
        <?php
        // Conecta con el servidor de MySQL
        $link = @mysqli_connect(
                        'localhost', // El servidor
                        'wwwdata', // El usuario
                        '', // La contraseña
                        'biblioteca'); // La base de datos
        if (!$link) {
            echo '<p>Error al conectar con la base de datos: ' . mysqli_connect_error();
            echo '</p>';
            exit;
        }
        // Ejecuta una sentencia SQL
        $sentencia = 'SELECT * FROM libros';
        if (!($resultado = @mysqli_query($link, $sentencia))) {
            echo "<p>Error al ejecutar la sentencia <b>$sentencia</b>: " . mysqli_error($link);
            echo '</p>';
            exit;
        }
        echo '<table><tr>';
        echo '<th>IdLibro</th><th>Título</th><th>Resumen</th>';
        echo '<th>Autor</th><th>Categoría</th><th>Editorial</th><th>Anyo</th>';
        echo '</tr>';
        // Recorre el resultado y lo muestra en forma de tabla HTML
        while ($fila = mysqli_fetch_assoc($resultado)) {
            echo '<tr>';
            echo '<td>' . $fila['IdLibro'] . '</td>';
            echo '<td>' . $fila['Titulo'] . '</td>';
            echo '<td>' . $fila['Resumen'] . '</td>';
            echo '<td>' . $fila['Autor'] . '</td>';
            echo '<td>' . $fila['Categoria'] . '</td>';
            echo '<td>' . $fila['Editorial'] . '</td>';
            echo '<td>' . $fila['Anyo'] . '</td>';
            echo '</tr>';
        }
        echo '</table>';
        // Libera la memoria ocupada por el resultado
        mysqli_free_result($resultado);
        // Cierra la conexión
        mysqli_close($link);
        ?>
    </body>
</html>
A continuación se muestra el ejemplo anterior pero programado con el interfaz orientado a objetos de mysqli. En este caso, se emplea new mysqli() para crear la conexión y lo que antes eran llamadas a funciones se convierten en llamadas a métodos del objeto creado por new mysqli(); para acceder a los métodos y propiedades de un objeto se emplea el operador “->”:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Prueba de SELECT y mysqli orientado a objetos</title>
    </head>
    <body>
        <?php
        // Conecta con el servidor de MySQL
        $mysqli = @new mysqli(
                        'localhost', // El servidor
                        'wwwdata', // El usuario
                        '', // La contraseña
                        'biblioteca'); // La base de datos
        if (mysqli_connect_errno()) {
            echo '<p>Error al conectar con la base de datos: '
                 . mysqli_connect_error();
            echo '</p>';
            exit;
        }
        // Ejecuta una sentencia SQL
        $sentencia = 'SELECT * FROM libros';
        if (!($resultado = $mysqli->query($sentencia))) {
            echo "<p>Error al ejecutar la sentencia <b>$sentencia</b>: " 
                 . $mysqli->error;
            echo '</p>';
            exit;
        }
        echo '<table><tr>';
        echo '<th>IdLibro</th><th>Título</th><th>Resumen</th>';
        echo '<th>Autor</th><th>Categoría</th><th>Editorial</th><th>Anyo</th>';
        echo '</tr>';
        // Recorre el resultado y lo muestra en forma de tabla HTML
        while ($fila = $resultado->fetch_assoc()) {
            echo '<tr>';
            echo '<td>' . $fila['IdLibro'] . '</td>';
            echo '<td>' . $fila['Titulo'] . '</td>';
            echo '<td>' . $fila['Resumen'] . '</td>';
            echo '<td>' . $fila['Autor'] . '</td>';
            echo '<td>' . $fila['Categoria'] . '</td>';
            echo '<td>' . $fila['Editorial'] . '</td>';
            echo '<td>' . $fila['Anyo'] . '</td>';
            echo '</tr>';
        }
        echo '</table>';
        // Libera la memoria ocupada por el resultado
        $resultado->close();
        // Cierra la conexión
        $mysqli->close();
        ?>
    </body>
</html>
Fuentes: iDESWEB >> PHP:Mysqli

No hay comentarios:

Publicar un comentario