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