viernes, 4 de noviembre de 2016

PHP: Uso de ADOdb

ADOdb es una librería de clases para acceder a bases de datos para PHP que posee un funcionamiento similar a Microsoft ADO. ADOdb ofrece un acceso estándar a diversos SGBD, ya que oculta (encapsula) las diferencias. En la actualidad, ADOdb ofrece acceso a MySQL, Oracle, Microsoft SQL Server, Sybase, Sybase SQL Anywhere, Informix, PostgreSQL, FrontBase, SQLite, Interbase (Firebird y las variantes de Borland), Microsoft Foxpro, Microsoft Access, ADO, IBM DB2, SAP DB y ODBC.

Las clases principales que se emplean en ADOdb son ADOConnection y ADORecordSet. La clase ADOConnection posee las siguientes propiedades y métodos principales:
  • Close(): cierra la conexión y libera toda la memoria y recursos ocupados.
  • Connect(servidor, usuario, contraseña, baseDatos): abre una conexión con una base de datos.
  • ErrorMsg(): devuelve una descripción del último error.
  • ErrorNo(): devuelve el código del último error o 0 si no ha habido error.
  • Execute(sentencia): ejecuta una sentencia SQL y devuelve un objeto ADORecordSet.
La clase ADORecordSet posee las siguientes propiedades y métodos principales:
  • Close(): cierra el resultado y libera toda la memoria y recursos ocupados.
  • EOF: devuelve true si el cursor interno ha superado la última fila del resultado y false en caso contrario.
  • FieldCount(): devuelve el número de campos (columnas) en un resultado.
  • fields: array que contiene la fila actual.
  • GetRows(): devuelve todas las filas del resultado en forma de array bidimensional.
  • MoveFirst(): mueve el cursor interno a la primera fila en el resultado.
  • MoveNext(): mueve el cursor interno a la última fila en el resultado.
  • RecordCount(): devuelve el número de filas en un resultado.
Para usar ADOdb en PHP es necesario incluir en el código el fichero adodb.inc.php en cada página donde se vaya a utilizar. Si emplea la directiva include_path del fichero php.ini, se puede evitar el tener que copiar los ficheros de ADOdb en cada sitio web o emplear rutas de acceso complicadas. La directiva include_path permite definir una lista de directorios donde las funciones require(), include(), fopen(), file(), readfile() y file_get_contents() buscarán los ficheros.

Por ejemplo, en XAMPP la directiva include_path está configurada como .;C:\xampp\php\pear\. El siguiente ejemplo muestra como realizar un acceso básico a una base de datos mediante ADOdb; para crear una conexión con la base de datos se puede emplear tanto NewADOConnection(driver) como ADONewConnection(driver), ya que ambos son sinónimos; en este ejemplo se ha activado la propiedad debug para mostrar información de depuración (como por ejemplo, la sentencia SQL que se ejecuta) y se emplea GetRows() para obtener todo el resultado en forma de array bidimensional que se imprime directamente con la función print_r():

<!DOCTYPE html >
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Prueba básica con ADOdb</title>
    </head>
    <body>
        <?php
        include_once 'adodb/adodb.inc.php';
        $con = NewADOConnection('mysql');
        $con->debug = true;
        $con->Connect('localhost',  // El servidor
                'wwwdata',          // El usuario
                '',                 // La contraseña
                'biblioteca');      // La base de datos
        // Ejecuta una sentencia SQL
        $sentencia = 'SELECT * FROM libros';
        $resultado = $con->Execute($sentencia);
        echo "<pre>";
        print_r($resultado->GetRows());
        echo "</pre>";
        $resultado->Close(); // Opcional
        $con->Close(); // Opcional
        ?>
    </body>
</html>
El siguiente ejemplo, un poco más elaborado, muestra en forma de tabla HTML el resultado de ejecutar una sentencia SQL; para ello recorre fila a fila y columna a columna el resultado:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Prueba de SELECT con ADOdb</title>
    </head>
    <body>
        <?php
        include_once 'adodb/adodb.inc.php';
        $con = NewADOConnection('mysql');
        $con->Connect('localhost',  // El servidor
                'wwwdata',          // El usuario
                '',                 // La contraseña
                'biblioteca');      // La base de datos
        // Ejecuta una sentencia SQL
        $sentencia = 'SELECT * FROM libros';
        $resultado = $con->Execute($sentencia);
        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 (!$resultado->EOF) {
            echo '<tr>';
            echo '<td>' . $resultado->fields['IdLibro'] . '</td>';
            echo '<td>' . $resultado->fields['Titulo'] . '</td>';
            echo '<td>' . $resultado->fields['Resumen'] . '</td>';
            echo '<td>' . $resultado->fields['Autor'] . '</td>';
            echo '<td>' . $resultado->fields['Categoria'] . '</td>';
            echo '<td>' . $resultado->fields['Editorial'] . '</td>';
            echo '<td>' . $resultado->fields['Anyo'] . '</td>';
            echo '</tr>';
            $resultado->MoveNext();
        }
        echo '</table>';
        $resultado->Close(); // Opcional
        $con->Close(); // Opcional
        ?>
    </body>
</html>
Fuentes: iDESWEB

No hay comentarios:

Publicar un comentario