22 Nov 2007

PHP - Conectar con una base de datos e imprimir una consulta


Bueno, para comenzar con los tutoriales y entrando más en el tema del diseño web, he querido empezar con un tutorial básico de como conectar a una base de datos MySQL y realizar una consulta sencilla a una tabla.

No quiero solamente poner un código para copiar y pegar, pretendo explicar bien para que se utiliza cada función y asi demostrar que php como todos los lenguajes de programación tienen cierta logica y que cualquiera la puede entender.

Espero les ayude ;).

Bueno, para empezar tenemos que tener una base de datos MySQL creada en el servidor MySQL (valga la redundancia) un servidor Web Apache y por supuesto, el interprete php (les recomiendo bajarse el Appserv y se ahorrarán instalar todo por separado). Yo en este tutorial voy a usar una BD (base de datos) llamada registrados, la cual contiene una tabla llamada usuarios, que a su vez tiene los siguientes campos (id_usuario, nombre, password).

Abajo adjunto una imagen en la que vagamente muestro la estructura de la base de datos, con la tabla y sus campos.

Estructura de la base de datos

Una vez definido esto procederemos con el php para conectar y realizar la consulta a la base de datos.

Supongamos que creamos en nuestro servidor HTTP una carpeta llamada "consulta" y dentro de ella crearemos un archivo llamado "index.php". De modo que sea accesible por ejemplo, de esta forma "http://[root_del_servidor]/consulta/index.php".

Index.php

PHP:
  1. <?php
  2.  
  3. /* AQUI REALIZAREMOS NUESTRA CONEXION */
  4.  
  5. mysql_connect ("localhost", "usuario", "password");
  6.  
  7. /* mysql_connect conecta al servidor mysql, y para
  8. hacerlo necesita saber 3 cosas, la primera es en donde
  9. esta el servidor, por lo general el servidor mysql esta
  10. en la misma maquina donde se ejecuta el script, por lo
  11. tanto el 99% de las veces es "localhost". Luego
  12. se necesita el nombre de usuario que tiene los permisos
  13. necesarios para acceder al servidor, asi como tambien
  14. su contraseña */
  15.  
  16. mysql_select_db ("registrados");
  17.  
  18. /* mysql_select_db lo que hace es recibir el nombre de
  19. la base de datos con la que deseamos trabajar, es el unico
  20. parametro de esta funcion. En este caso es "registrados". */
  21.  
  22. /* BIEN, YA ESTAMOS CONECTADOS AL SERVIDOR Y A LA
  23. BASE DE DATOS, AHORA LO QUE NECESITAMOS ES DECIRLE
  24. AL SERVIDOS MYSQL QUE ES LO QUE QUEREMOS OBTENER
  25. DE ESA BASE DE DATOS.*/
  26.  
  27. $sql = "SELECT * FROM usuarios";
  28.  
  29. /* Bien, lo que acabo de hacer es asignar a una variable
  30. la cadena de consulta SQL que voy a usar para decirle al
  31. servidor los datos que quiero obtener. Seria algo asi:
  32. "SELECCIONAR todo DE usuarios. */
  33.  
  34. $consulta_sql = mysql_query ($sql);
  35.  
  36. /* mysql_query lo que hace es comunicar al servidor
  37. MySQL la consulta que se hará sobre la base de datos,
  38. y esta función nos entrega un identificador para que
  39. podamos luego recuperar los resultados */
  40.  
  41. while ($row = mysql_fetch_array($consulta))
  42. {
  43.  
  44. echo "Nombre:".$row['nombre']."<br>";
  45. echo "Nombre:".$row['password'];
  46.  
  47. }
  48.  
  49. /* Bueno quizas esto es lo mas difícil de entender, lo
  50. que hicimos aca es un bucle del tipo while por la sencilla
  51. razon de que debemos recorrer todos los datos arrojados
  52. de la base y no solo uno, pero vamos por partes.
  53. mysql_fetch_array($identificador) lo que hace es
  54. construir un Array a partir de un identificador arrojado
  55. por el servidor MySQL el cual contiene una referencia
  56. a un juego de resultados. En este caso le pasamos el
  57. identificador $consulta.
  58. El bucle significa esto: MIENTRAS HAYA DATOS PARA
  59. ASIGNAR A LA VARIABLE $ROW (array) MOSTRAR
  60. EL NOMBRE Y EL PASSWORD. (esto lo hará tantas
  61. veces como juego de datos (filas de la tabla) haya).
  62. el array, en este caso $row tiene como indices los
  63. nombres de los campos de la tabla, de esa forma podemos
  64. recuperar cada valor de cada juego de resultados, por eso
  65. si queremos mostrar el nombre pondremos
  66. "echo $row['nombre']";
  67. */
  68.  
  69. mysql_free_result($consulta);
  70.  
  71. /* Y por último, con esta simpre instrucción lo que
  72. hacemos es liberar el identificador con los resultados
  73. del servidor MySQL para liberar memoria. */
  74.  
  75. ?>

De esta forma logramos conectar y mostrar un juego de datos de una tabla.

Posteado en Programación, Tutoriales


Comentarios:

  1. Juan Manuel Dice:

    Hola, trabajo para Wixi y me pidieron el contacto de bloggers que hayan escrito un artículo sobre Wixi. Si les interesa que los contactemos eventualmente en el futuro (por nuevas versiones, invitaciones, etc.), pueden enviarme una dirección de mail y un nombre de contacto.

    Un saludo

  2. Cristian Dice:

    Hola, mi consulta es la siguiente, estoy armando una sección de avisos clasificados donde la consulta para mostrar los avisos es como la de este articulo. Le estoy agregando la opción de enviar un mensaje de correo electrónico a quien publica el aviso y queda algo así:

    <a href=”?action=enviarMensaje&id=”>enviar mensaje

    eso lo uso para una nueva consulta:

    $result = mysql_query(”SELECT * FROM clasificados WHERE aviso_id=’$id’ “, $link);

    ahora, la cosa es que se que voy a tener un unico resulado que es el registro correspondiente a ese id. Obligadamente tengo que usar un while para hacer uso de estos resultados?

  3. Nacho Dice:

    Cristian, hola.

    No, simplemente haz este paso:

    $row = mysql_fetch_array($consulta);

    sin el while entiendes?

    y luego recupera los datos como se menciono antes:

    $titulo_aviso = $row['titulo_aviso'];

    haciendo esto, el array $row solo tendra un juego de datos, el primero que se arrojo desde la base de datos, que como en este caso discriminaste por ID, va a ser uno solo. (siempre y cuando el id sea unico en la tabla).

    Cualquier consulta, posteas :)

  4. Jorgens Dice:

    Buena explicación. Intento introducirme en el estudio de php y mysql y me ha parecido un buen comienzo. Muy bien explicado.

    Me ha sabido a poco, je je je. Si publicas más cosillas te tendré muy en cuenta!

    Un abrazo y gracias!

  5. hartur Dice:

    Hola: como se donde esta mi base de datos en el servidor o como la exporto desde acces?
    en que carpeta debe ir para que pueda conectarse