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