Acceso a MySQL usando la extensión MySQL

Prácticamente en casi todas las instalaciones LAMP y WAMP disponemos de esta extensión para acceder a MySQL.

La extensión mysql se puede usar con cualquier versión de MySQL aunque no soporta toda la funcionalidad de la versión 4.1 o superiores de MySQL. Para ello usaremos la extensión mysqli que veremos más adelante.

En nuestra instalación WAMP con PHP 5 deberemos tener en la carpeta **ext**, las librería PECL (conjunto de módulos para ampliar las capacidades de PHP como son la creación de pdf, manipulación de archivos zip, etc.) **php_mysql.dll** y **php_mysqli.dll**. En el fichero **php.ini** deben estar activadas (descomentadas) las líneas:

PECL: PHP Extension Community Library

extension=php_mysql.dll

extension=php_mysqli.dll

Recordemos que para que las extensiones PECL funcionen debemos tener en la variable de ambiente PATH la ruta donde se encuentran las mismas. Al haber realizado la instalación con el paquete WAMP, la extensión por defecto es la siguiente:

extension_dir = "C:\wamp\bin\php\php5.3.13\ext\"

Además, en el fichero **php.ini** se incluirán las siguientes opciones de configuración, que podremos dejar tal y como vienen por defecto:

  • mysql.max_links(integer): El número máximo de conexiones MySQL por proceso.
  • mysql.default_port (string): El número de puerto TCP predeterminado para usar cuando se conecta con el servidor de bases de datos, si no se indica otro. Si no se indica un valor predeterminado, el puerto se obtendrá de la variable de entorno MYSQL_TCP_PORT, la entrada mysql-tcp en /etc/services o la constante de tiempo de compilación MYSQL_PORT, en ese orden. En Win32 sólo se usa la constante MYSQL_PORT.
  • mysql.default_socket (string): El nombre de socket predeterminado a ser usado cuando se realicen conexiones con un servidor de base de datos local, si no se indica algún otro.
  • mysql.default_host(string): La máquina anfitriona predeterminada a ser usada cuando se realicen conexiones con un servidor de bases de datos, si no se indica otro valor. No es aplicable en SQL safe mode.

  • mysql.default_user(string): El nombre de usuario predeterminado para conectarse al servidor de bases de datos si no se indica otro. No es aplicable bajo SQL safe mode.

  • mysql.default_password(string): La contraseña predeterminada a usar cuando se realicen conexiones con el servidor de bases de datos, si no se indica otro valor. No es aplicable en SQL safe mode.

Más información de estas opciones en el manual de PHP: http://docs.php.net/manual/es/book.mysql.php

En cualquier script PHP utilizado para acceder a una base de datos se siguen los siguientes pasos básicos:

  1. Comprobar y filtrar los datos procedentes del usuario.
  2. Configurar una conexión con la base de datos pertinente.
  3. Ejecutar una query sobre la base de datos.
  4. Recuperar, procesar y mostrar los resultados.
  5. Liberar recursos
  6. Cerrar la conexión

Vamos a ver cada paso usando el siguiente ejemplo como base para explicar las funciones:

<?php
   // Función encargada de eliminar caracteres de escape de una fila.

   function LimpiaResultados(&$fila)
   {
      foreach ($fila as $campo => $valor)
         if(is_string($valor) === true)
            $fila[$campo] = stripslashes($fila[$campo]);
   }
   // Función que comprueba errores devueltos por MySQL
   function CompruebaErrorMySQL($mensaje, $conexion = false)
   {
      if (mysql_errno() != 0)
      {
         echo $mensaje.' :'.mysql_error();
         if ($conexion !== false)
            mysql_close($conexion);
            exit();
      }
   }
   // Establecemos la conexión y seleccionamos la base de datos.
   $db = mysql_connect('localhost', 'comprador', 'proweb2013');
   CompruebaErrorMySQL('Conectando con la Base de Datos');
   // Seleccionamos la base de datos.
   mysql_select_db('uazon', $db);
   CompruebaErrorMySQL('Seleccionando la base de datos uazon', $db);
   // Realizamos la consulta.
   $consulta = " SELECT L.isbn, L.titulo, L.precio, A.nombre as autor" .
      " FROM libros as L, autores as A, libros_autores as LA " .
      " WHERE L.id = LA.fk_libros AND " .
      " A.id = LA.fk_autores " . " ORDER BY L.titulo";
      $result = mysql_query($consulta, $db);
      CompruebaErrorMySQL('Error realizando la consulta: ' . $consulta, $db);
      // Miramos si hemos obtenido alguna fila en el resultado.
      if (mysql_num_rows($result) > 0)
      {
         echo '<h2>Listado de libros</h2>';
         echo '<table width="50%" border="1" cellspacing="1" >';
         echo'<tr>';
         echo'<th >ISBN</th>';
         echo'<th >TITULO</th>';
         echo'<th >AUTOR</th>';
         echo'<th >PRECIO</th>';
         echo'';
         // Obtenemos la fila actual en un array asociativo y
         // desplazamos el cursor a la siguiente fila
         while ($fila = mysql_fetch_assoc($result))
         {
            LimpiaResultados($fila);
            echo'<tr>';
            echo'<td >'. $fila['isbn'] . '</td>';
            echo '<td > '. $fila['titulo'] . '</td>';
            echo'<td >'. $fila['autor'] . '</td>';
            echo'<td >'. number_format($fila['precio'],2) . ' &euro;</td>';
            echo'';
         }
      }
      else
         echo '<p>No hay libros dados de alta.</p>';

      // Liberamos el resultado de la consulta.
      mysql_free_result($result);
      // Cerramos la conexión a la base de datos.
      mysql_close($db);
?>

results matching ""

    No results matching ""