Está en la página 1de 30

Curso Bsico PHP

Tema 13 MySql y php


Ral Renales Agero

1.

Qu es MySQL?

Bases de datos relacionales El tipo de bases de datos ms generalizado es el de las bases de datos relacionales. Es el modelo ms adecuado para modelar problemas reales y resulta sencillo de usar y administrar. El usuario se puede desentender de donde y como se almacenan los datos. La informacin puede ser recuperada o almacenada mediante "consultas" que ofrecen una amplia flexibilidad y poder para administrar la informacin. Las bases de datos relacionales guardan la informacin en tablas formadas por registros (las filas de la tabla) que estn formados por campos (las columnas de un tabla). MySQL MySQL es un producto desarrollado por la compaa MySQL AB. Es el sistema gestor de bases de datos ms utilizado en las aplicaciones web de Internet. En sus comienzos careca de muchas funcionalidades habituales en este tipo de bases de datos como integridad referencial o soporte para transacciones pero incluso con estos inconvenientes se volvi muy popular. La versin actual ha evolucionado notablemente y es mucho ms completa. MySQL es una base de datos relacional y destaca por las siguientes caractersticas.

Es sencilla de usar y administrar. Es segura. Es eficiente. Es sofware libre y por lo tanto gratuita. Soporta el lenguaje de consultas SQL.
Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

Est disponible para casi todos los sitemas operativos. Ofrece posibilidades avanzadas de administracin Su sencillez no es un inconveniente, la versin actual incluye muchas de las caractersticas avanzadas que ofrecen otras bases de datos de pago.

MySQL es la pareja perfecta para las aplicaciones programadas en PHP.

2.

El lenguaje SQL

Qu es SQL? SQL es el acrnimo del trmino ingls Structured Query Language , lenguaje de consultas estructurado. Es un lenguaje que se usa para comunicarnos con el sistema gestor de bases de datos. Es a la vez potente y sencillo a la hora de recuperar informacin de forma estructurada. Trabajar con MySQL El lenguaje de consultas SQL se va a explicar a travs de ejemplos sobre MySQL. Uno de los inconvenientes que tiene MySQL es que para administrar esta base de datos se ha de hacer a travs de una consola en modo texto (no tiene un interfaz en modo grfico amigable). No obstante, con un poco de prctica encontraremos que la consola es un medio rpido para conseguir nuestros objetivos. Para poder acceder a la consola de MySQL es necesario seguir los siguientes pasos, suponiendo que hayamos instalado el paquete Xampp en Windows. 1. Xampp debe estar iniciciado. De no ser as iremos a la carpeta C:\CursoPhp\xampplite (el directorio donde hemos instalado Xampp) y ejecutaremos xampp_start.exe.

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

2. Una vez arrancado Xampp ejecutaremos el comando mysql -u root . Esto se puede hacer en Windows desde Inicio --> Ejecutar o desde MS-DOS (smbolo de sistema).

La consola es igual tanto en Windows como en Linux, por lo que una vez dentro no se apreciarn diferencias. Sintaxis de SQL A diferencia de PHP MySQL no distingue entre maysculas y minsculas y las instrucciones se pueden escribir tanto en una como en la otra forma. Pero para hacer ms legible lo que leemos lo habitual es escribir las palabras clave del lenguaje en maysculas y el resto del cdigo en minsculas. Esta es la convencin que se sigue en este texto. Otra caracterstica de MySQL es que las sentencias se terminan siempre en punto y coma, como en PHP. Crear la estructura de la base de datos Antes de poder almacenar datos hemos de crear una estructura que los pueda contener. Creacin de una base de datos MySQL es un sistema gestor de bases de datos, que puede gestionarms de una base de datos independiente. Por lo tanto lo primero que debemos hacer es crear nuestra base de datos personal que utilizaremos durante las pruebas. Para ello se usa la sentencia SQL CREATE DATABASE.
CREATE DATABASE nombre_base_datos;

Ejemplo 4.3.1. Creamos nuestra base de datos que llamaremos curso_php.

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

Seleccin de una base de datos Antes de poder trabajar con la base de datos hemos de seleccionarla. Para ello usaremos el comando USE.
USE nombre_base_datos ;

Ejemplo 4.3.2. A partir de ahora todas las sentencias SQL se harn sobre la base de datos curso_php .

Creacin de tablas Las bases de datos almacenan la informacin en tablas, que son el pilar fundamental de las bases de datos relacionales. La instruccin SQL que se utiliza para crear una tabla es CREATE TABLE.
CREATE TABLE nombre_tabla ( definicion_tabla );

La defincin de la tabla est compuesta por una lista de sus campos (columnas). Los campos
CREATE TABLE nombre_tabla ( nombre_campo1 tipo_campo1 atributos_campo1, atributos_campo2 , ... ); nombre_campo2 tipo_campo2

La definicin de cada campo, salvo del ltimo, debe termninar en coma. Cada campo solo puede almacenar un tipo de datos, de momento nos bastar con conocer los siguientes: INT - Almacena nmeros enteros. CHAR(longitud ) - Almacena cadenas de texto de un mximo de longitud caracteres. DATE - Almacena fechas DATETIME - Almacena fechas con la hora

Los atributos de un campo estarn vacos en la mayora de los casos. Aunque hay una excepcin. en casi todas las tablas se suele poner un campo id que contenga un identificador nico de cada registro. A este campo se le dan los atributos:

PRIMARY KEY - Indica que el campo identifica de forma nica el registro (fila).
Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

AUTO_ INCREMENT - El campo se rellena automticamente incrementndose su valor en 1 cada vez que se aade un registro.

Ejemplo 4.3.3. En este ejemplo se ve la creacin de una tabla con datos sobre los empleados de una empresa.
CREATE TABLE empleados ( id INT PRIMARY KEY AUTO_INCREMENT, nombre CHAR(50), puesto CHAR(20), fecha_nacimiento DATE, salario INT );

Los campos que se han definido en la tabla tiene las siguientes caractersticas: id - Campo de tipo entero que identifica de forma nica un registro. Cada vez que se aade un registro se incrementa automticamente. nombre - Campo que puede almacenar una cadena de hasta 50 caracteres, destinado a guardar el nombre. No tiene atributos. puesto - Campo que puede almacenar una cadena de hasta 20 caracteres, destinado a guardar el puesto que desempea. No tiene atributos. fecha_nacimiento - Almacena la fecha de nacimiento en formato YYYY-MMDD (4 cifras para el ao, guin, 2 cifras para el mes, guin, 2 cifras apra el da). No tiene atributos. salario - Campo de tipo entero que guarda el sueldo en euros del empleado. No tiene atributos.

Para ejecutar esta sentencia SQL podemos copiarla y pegarla en la consola de MySQL.

Listar tablas Para ver todas las tablas que hay disponibles en una base de datos se usa la instruccin SHOW TABLES.
SHOW TABLES;

Ejemplo 4.3.4. Al listar las tablas de la base de datos comprobamos que solo hay una, la que acabamos de crear.

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

Mostrar la definicin de una tabla Esto se hace mediante la sentencia SQL DESCRIBE.
DESCRIBE nombre_tabla ;

Ejemplo 4.3.5. Al mostrar la descripcin de la tabla empleados se puede comporbar que coincide con la definicin que hemos puesto al crearla.

Borrar tablas Para borrar una tabla se usa la sentencia SQL DROP DATABASE. Hay que tener mucho cuidado ya que al borrar una tabla borramos de forma irrecuperable todos los datos que hubieramos introducido.
DROP TABLE nombre_tabla ;

Ejemplo 4.3.6. Vamos a eliminar la tabla empleados . Todos los datos que contenga se borrarn.

Creacin de tablas mediante un script La definicin de una base de datos es costosa de escribir y de introducir manualmente como hemos visto en las ultimas consultas de creacin de tablas. Un pequeo error nos obligar a volver a introducir la consulta. Para solventar este inconveniente, y dado que SQL es un lenguaje textual, almacenaremos todas estas consultas en un fichero de texto de extensin .sql , para distinguirlo de otros ficheros. De esta manera podremos editarlo fcilmente con cualquier editor de texto plano (sin formato). Este fichero contendr (para MySQL) la seleccin de la base de datos y tantas consultas de creacin (e incializacin mediante insercin de datos, para as tener contenido inicial) como se desee.
Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

Ejemplo 4.3.7. Nuestra base de datos curso_php quedar definida as en el fichero curso_php.sql .
CREATE DATABASE IF NOT EXISTS curso_php; USE curso_php; CREATE TABLE IF NOT EXISTS empleados ( id INT PRIMARY KEY AUTO_INCREMENT, nombre CHAR(50), puesto CHAR(20), fecha_nacimiento DATE, salario INT );

Ntese que se ha aplicado el modificador IF NOT EXISTS. Su efecto es que crea la tabla en el caso de que no exista y si existe no muestra ningn mensaje de error. Este cdigo, como hemos observado, lo guardaremos en un archivo llamado curso_php.sql . Un buen sitio es la carpeta C:\CursoPHP\xampplite\htdocs\practicasPHP\sql (que tendremos que crear). Una vez guardado el script, para ejecutarlo lo haremos con el comando SOURCE:

Operaciones con datos Ya tenemos la estructura que va a dar soporte a los datos, ahora nos falta saber como podemos aadirlos, consultarlos, modificarlos y eliminarlos. Introducir datos en una tabla Las tablas que hemos creado estn vacas, y as sirven de poco. Son como un armazn, pero para que la base de datos sea til hemos de introducir datos. Para insertar un registro en una tabla se usa la sentencia SQL INSERT.
INSERT INTO tabla (campo1, campo2, ...) VALUES (dato1, dato2, ...);

Ejemplo 4.3.8. Vamos a insertar un primer dato en la tabla empleados. Al igual que en PHP los datos que son cadenas de texto los ponemos entre comillas, al igual que la fecha. El campo id no hace falta insertarlo ya que lo hemos definido como autoincremental.

Ejemplo 4.3.9. Se pueden insertar varios registros (filas) en una tabla con una sentencia insert, separando los conjuntos de valores entre parntesis por comas.
Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

Leyendo datos de una tabla Aqu es donde se despliega la potencia de SQL, que adems tiene una sintaxis muy fcil de comprender. Los datos se leen de la tabla a travs de consultas, que son como preguntas que le hacemos a la base de datos. La sentencia bsica para hacer consultas es SELECT.
SELECT campo1, campo2, ... FROM tabla ;

Ejemplo 4.3.10. Una consulta sobre la tabla empleados.

Ejemplo 4.3.11. En muchos casos querremos seleccionar todos los campos de la tabla. Para ello se usa el comodn astersco " * ", de tal forma que esta consulta muestra exctamente el mismo resultado que la anterior.
SELECT * FROM tabla ;

Ejemplo 4.3.12. En este caso restringimos el rango de la consulta al campo nombre.

Filtrando datos de una tabla

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

La clausula WHERE en una consulta SELECT permite poner condiciones de manera que se nos muestren solo los registros que la cumplen. Esta es la sintaxis de la sentencia SELECT ampliada con esta clusula.
SELECT campos FROM tabla WHERE condiciones ;

Ejemplo 4.3.13. Esta consulta devuelve todos los datos de los empleados cuyo salario es mayor de 1400 euros.

Se pueden unir varias condiciones mediante los operadores lgicos AND, OR y NOT (cuyo funcionamiento es muy similar a PHP). Se pueden usar parntesis si se tienen dudas sobre las reglas de precedencia. Ejemplo 4.3.14. Empleados que cobran ms de 1400 euros y que nacieron antes de 1975.

Ejemplo 4.3.15. Empleados que trabajan de comerciales o programadores.

Ejemplo 4.3.16. Bsqueda textual. En ocasiones se quiere buscar los registros cuyo texto contiene otro. Para ello, en lugar de comparar con el operador igual " = " se usa el operador LIKE y la cadena son la que se compara se pone entre comillas y signos de porcentaje "%cadena %". Esta consulta muestra los registros cuyo nombre contiene la cadena "an".

Ordenar datos de una consulta


Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

En muchas ocasiones querremos que los datos devueltos nos lleguen devueltos. Para ello usaremos con el SELECT la clausula ORDER BY a la que le acompaa el campo por el que queremos ordenar. En el caso de que haya una clausula WHERE, ORDER BY ha de ir detrs necesariamente. La sintaxis nueva queda de la siguiente forma.
SELECT campos FROM tabla WHERE condiciones ORDER BY campo;

Ejemplo 4.3.17. Aqu se muestran todos los registros de la tabla ordenados por el nombre del empleado en orden alfabtico.

Ejemplo 4.3.18. Mediante el modificador DESC se pueden devolver los resultados en orden inverso.

Actualizar datos Adems de aadir datos necesitaremos saber como modificar los existentes. La sentencia UPDATE se encarga de esto. Se suele usar en combinacin con una condicin (similar a las que se usan en los SELECT) que filtra los registros a cambiar.
UPDATE tabla SET campo = valor WHERE condiciones;

Ejemplo 4.3.19. Vamos a usar la sentencia UPDATE para subir el sueldo al empleado Ana. Como la tabla tien un campo id es por este por el que filtraremos. Al final se hace un SELECT para comprobar que la tabla se ha actualizado.

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

Ejemplo 4.3.20. Si no filtramos la actuallizacin se vern afectados todos los registros de la tabla.

En una sentencia UPDATE se pueden sustituir varios campos a la vez separandolos por comas.
UPDATE tabla SET campo1 = valor1, campo2 = valor2, ...

Borrado de registros de una tabla Para el borrado de datos de una tabla se usa la sentencia DELETE. Se suele usar en combinacin con una condicin que filtra los datos a borrar, si se usara sola borrara todos los datos de la tabla. Su uso tiene cierta similitud con el de SELECT, con la diferencia de que no hay que indicar campos ya que se borra toda la fila.
DELETE FROM tabla WHERE condiciones;

Ejemplo 4.3.21. Borrado del empleado Juan. Una vez ms se selecciona por el id .

Ejemplo 4.3.22. Al usar la sentencia DELETE sin filtrar se estn borrando todos los datos de la tabla (pero no su definicin). Luego al hacer el SELECT el mensaje Empty set nos indica que la tabla est vaca.

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

15.2. Introduccin a phpMyAdmin


En este curso no vamos a explicar en profundidad el uso de phpMyAdmin debido a su extensin. Pero s daremos unas cuantas directrices para que puedas empezar a manejarte con l y a dar tus primeros pasos en el uso de las bases de datos. Para abrir phpMyAdmin, una vez instalado WAMP, haz clic en la opcin phpMyAdmin de su men como vimos en un apartado anterior. Se abrir una ventana del navegador y mostrar la ventana principal de la aplicacin:

Desde aqu podremos crear nuevas bases de datos, tablas y usuarios con sus respectivos privilegios. Pero, vayamos paso a paso.

Crear una Base de Datos en phpMyAdmin


Para crear una nueva base de datos en phpMyAdmin basta con escribir el nombre de la nueva base de datos en el cuadro de texto creado para ello en la pgina principal y pulsar el botn Crear. La nueva base de datos se crear automticamente.

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

Puedes seleccionar un juego de carcteres en el desplegable Cotejamiento, si lo dejas en blanco se tomar el valor por defecto que variar segn la configuracin de cada servidor. Es recomendable que escojas la opcin utf-8_spanish_ci para mantener la compatibilidad con todos los caracteres del alfabeto en castellano y para que la salida en cualquier navegador sea correcta.

Una vez creada la base de datos podrs acceder a ella desde el men de la izquierda. Despliega el listado Base de datos y selecciona la base de datos que quieras modificar:

Crear una Tabla Paso a Paso


Cuando selecciones una Base de Datos en phpMyAdmin vers una nueva pantalla desde donde podrs ver todas las opciones para poder trabajar en ella:

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

En este caso en la pantalla principal encontraremos muy poca cosa porque no contiene ninguna tabla por ahora. Para crear una tabla lo nico que debes hacer es escribir su Nombre y especificar su Nmero de campos. Cuando hayas terminado pulsa el botn Continuar y vers una pantalla como esta:

Aqu debers establecer la configuracin de cada uno de los campos de la tabla. Rpidamente definiremos las propiedades ms frecuentemente utilizadas: Campo: El nombre del campo. Tipo: El tipo del valor del campo: texto, nmero entero, entero largo, etc... Cotejamiento: Juego de caracteres que utilizar el campo. Nulo: Si seleccionamos NOT NULL, el campo se deber rellenar obligatoriamente (no puede contener el valor nulo). Predeterminado: Un valor predeterminado para el campo.

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

Extra: Selecciona aqu si quieres que el campo sea de tipo numrico con autoincremento. Cada registro tendr un valor superior al anterior. Primaria: El campo es clave primaria de la tabla. ndice: El campo se indexar para optimizar la bsqueda. nico: El campo slo puede adoptar valores nicos. No podrn haber dos registros con un mismo valor en ese campo. Texto completo: Al visualizar la tabla mostrar el contenido completo del campo.

Pulsa el botn Grabar cuando hayas acabado y la tabla se crear. Ahora el aspecto de la ventana de la base de datos ser diferente pues mostrar el listado de tablas contenidas con sus propiedades.

Haciendo clic en el botn al lado del nombre de la tabla o haciendo clic sobre ella en el men de la izquierda podrs acceder a la vista en detalle de sus campos y propiedades. En esta ltima vista puedes hacer clic en la pestaa Examinar para ver el listado de todos los registros. Utiliza la pestaa Buscar para filtrar el listado por los valores de algn campo.

Insertar datos en una Tabla


Rellenar tablas desde phpMyAdmin es muy sencillo. Si no tienes ninguna base de datos seleccionada, selecciona previamente la que contiene la tabla a utilizar desde el desplegable que encontrars en la parte superior izquierda de la pantalla. Luego selecciona la tabla con la que quieres trabajar y haz clic en la pestaa Insertar.

En seguida se abrir una ventana desde donde podrs aadir una fila (o registro) a la tabla indicando el valor de cada campo:

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

En la columna Valor escribe el valor del Tipo de cada campo y pulsa Continuar cuando hayas acabado.

Otro modo de rellenar una tabla es importando datos que tengamos en un archivo provinente de otra base de datos o hecho por nosotros mismos. Para ello, tendrs que hacer clic en la pestaa Importar en el mismo men donde encontraste la opcin anterior:

Se abrir una ventana desde donde debers especificar qu archivo quieres importar:

Observa que debers indicar la localizacin del archivo que contiene los datos que queremos importar. Y sobre todo, lo ms importante, el Juego de caracteres que utiliza el archivo para que los datos que se introduzcan en la tabla se puedan adaptar de forma correcta y mantener la coherencia del texto. Una vez introducidos estos datos bastar con que pulses el botn Continuar y los registros (si no hubo ningn fallo en el archivo) se aadirn automticamente.

Modificar una Tabla


Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

Una vez tengas creada una tabla en la base de datos es posible editarla para modificar la configuracin de algn campo o incluso aadir uno nuevo. Para ello deberemos ir a la vista de la tabla haciendo clic en ella en el men que encontramos en la izquierda de la pgina una vez seleccionada la base de datos.

Esto har que se nos muestre la estructura de la tabla en la ventana. El modo en que podremos modificarla ser muy fcil. Observa la ventana:

Para aadir nuevos campos a la tabla slo tienes que escribir el nmero de campos que vas a crear en el campo Aadir ..... campo(s). Luego selecciona la pocicin donde se aadirn, Al final de la tabla, Al comienzo de la tabla o Despus de.. y pulsa el botn Continuar. Se abrir la ventana de definicin de campos que vimos en el apartado anterior y slo debers rellenarla como ya hemos visto.

Modificar campos ya existentes tampoco es muy complicado, slo tendrs que utilizar los botones que se encuentran en la columna accin del campo correspondiente.

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

El botn Modificar te permitir modificar la configuracin del campo. Podrs cambiar todas las opciones que viste cuando lo creaste. El botn Eliminar borrar el campo y todos los valores almacenados en cada registro que le correspondan. El botn Clave Principal principal de la tabla. El botn ndice establece que el campo se marque como clave

crea un nuevo indice en la tabla con el campo seleccionado.

Finalmente el botn nico establece el campo seleccionado como campo con valor nico, es decir, no puede contener valores repetidos. Si queremos realizar la misma accin sobre varios campos a la vez, podemos marcarlos con las casillas de verificacin que se encuentran en el extremo izquierdo y luego pulsar el icono correspondiente a la accin a realizar en la fila donde dice Para los elementos que estn marcados:

Modificar Datos de una Tabla Tambin una vez insertados datos en una tabla de una base de datos, podremos modificarlos. Esto es posible accediendo al contenido de la tabla desde la peataa Examinar que encontrars en la parte superior de la ventana:

Hacer clic en ese elemento har que puedas visualizar el contenido de la tabla. Y al mismo tiempo te dar la posibilidad de editar o eliminar el contenido de cada registro, adems del registro completo.

Desde esta vista podremos ver la informacin almacenada en la tabla.

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

Podemos utilizar los botones de la primera columna para modificar los datos. El botn Modificar te permitir modificar el contenido del registro. Plsalo e irs a la ventana que vimos en el apartado de Insertar datos. El botn Eliminar borrar el registro completo. Esta accin no es reversible as que ten cuidado cuando la utilices. Si quieres borrar varios registros de golpe, marca las casillas de esos registros y pulsa el botn Eliminar de la lnea Para los elementos que estn marcados.

Privilegios en PHPMYAdmin
En cualquier momento puedes utilizar el botn de phpMyAdmin. para volver a la pantalla principal

Aqu encontraremos un enlace a la seccin de Privilegios que nos ocupa en este apartado. Haz clic sobre l y vers la siguiente ventana:

que es la

Estableciendo privilegios podremos crear usuarios para la conexin remota a la base de datos con determinados derechos sobre una base de datos o incluso sobre una tabla. De esta forma podemos controlar a los usuarios que utilicen la base de datos y hacer distinciones entre ellos en su forma de trabajar con las tablas.

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

Para crear un nuevo usuario slo tienes que hacer clic en Agregar un nuevo usuario. En la siguiente ventana tendrs que introducir los valores que definirn la cuenta:

Rellena los datos siguientes. En Servidor selecciona Local porque es el nico modo con el que vamos a trabajar en estos momentos. El resto puedes configurarlo a tu gusto. Ms abajo encontrars estas opciones:

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

Aqu podrs seleccionar los privilegios del usuario en forma global, las opciones que marques aqu se aplicarn sobre todas las bases de datos del sistema. Puedes especificar tambin un lmite de recursos (conexiones, peticiones, etc...) Cuando ests listo pulsa Continuar.

Ahora vers la pantalla con las opciones del nuevo usuario que acabas de crear. Vers que algunas ya las conoces, como los privilegios globales. Lo que nos interesa en este momento son unas opciones que encontrars ms abajo, los privilegios especficos. Es decir, privilegios enfocados a una nica base de datos:

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

Selecciona una base de datos en el desplegable o escribe su nombre en el cuadro de texto. Luego pulsa Continuar.

Selecciona los privilegios que quieras aplicar y pulsa Continuar para finalizar. Vers que en la misma pgina ms abajo tienes una opcin muy parecida a la que acabamos de ver pero actando nicamente sobre una tabla de la base de datos. Estableciendo los privilegios de este modo recortaramos muchsimo ms la actuacin del usuario sobre la base de datos.

Los privilegios ms comunes son los siguientes: SELECT: permite al usuario realizar una consulta de seleccin para poder leer los datos de una tabla. INSERT: permite al usuario realizar una consulta de creacin de registro para introducir nuevos datos en una tabla.
Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

UPDATE: permite al usuario actualizar los valores de una tabla. DELETE: permite al usuario eliminar registros de una tabla. CREATE: permite al usuario crear tablas en la base de datos. DROP: permite al usuario eliminar una tabla o la base de datos completa.

Si conoces un poco SQL estos privilegios ya te sern familiares.

16.

Funciones de PHP con MySQL

Una vez que conocemos las caractersticas bsicas de MySQL y las sentencias SQL que se puede ejecutar vamos a ver como se integra MySQL con PHP. Las definiciones de bases de datos y tablas las haremos desde la consola de MySQL (preferiblemente a travs de un script SQL con las sentencias de creacin e inicializacin de tablas). La manipulacin de datos en cambio se har desde PHP. Las operaciones que nos interesan son, por lo tanto:

Leer datos. Aadir datos. Modificar datos. Eliminar datos.

PHP accede a MySQL a travs del API. Dispone de una extensin (biblioteca de funciones) con muchas funciones para acceder a la base de datos. Conectar con la base de datos Antes de empezar a consultar informacin tenemos que conectar con el sistema gestor de bases de datos y declarar la base de datos que vamos a usar. Esto se deber hacer en cualquier script que posteriormente quiera leer, aadir, modificar o eliminar datos. mysql_connect() Esta funcin conecta el script a un sistema gestor de bases de datos.
mysql_connect(servidor, usuario, contrasea )

Los parmetros que recibe son:

servidor - Nombre o direccin IP del servidor donde est alojada la base de datos. Si est instalado en la misma mquina que el servidor web lo normal es que
Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

sea localhost . Se puede elegir un nmero de puerto diferente del que se usa por defecto poniendo detras del servidor dos puntos " : " y el nmero del puerto. P.ej.: localhost:3340 . usuario - Nombre de usuario con privilegios para acceder a la base de datos. contrasea - Contrasea del usuario. Esta funcin devuelve una referencia a la base de datos que guardaremos en una variable para usarla en posteriores funciones de PHP con MySQL. mysql_select_db() Usa como parmetros la base de datos que queremos seleccionar y la variable en la que tengamos la referencia a la base de datos. Es equivalente en MySQL a la sentencia USE.
mysql_select_db(nombre_base_datos , referencia_bd )

Ejemplo 4.4.1. Los ejemplos de esta unidad didctica usaran la base de datos creada en la unidad didctica anterior llamada curso_php con la tabla empleados y con los cuatro registros creados.
<?php//Conecta a la BD, guarda en la variable $con la referencia a la BD $con = mysql_connect("localhost", "root", ""); //Selecciona la BD que se va a usar a partir de este momento.mysql_select_db("curso_php", $conn); ?>

Ejemplo 4.4.2. Una buena idea es guardar el proceso de conexin a la base de datos y luego utilizarlo en nuestros scripts mediante un include() . Aqu se ha creado el fichero conectar_bd.php.
<?php DEFINE(DB_HOST, "localhost"); DEFINE(DB_USER, "root"); DEFINE(DB_PASSWORD, ""); DEFINE(DB_NAME, "curso_php");$con = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); if (!$con || !mysql_select_db("curso_php", $con)) { die("Error conectando a la BD: " . mysql_error()); }?>

La funcin mysql_error() devuelve un texto con el error que se produjo en nuestra ltima operacin sobre la base de datos. Se ha utilizado la funcin de PHP die() que termina la ejecucin del script sacando un mensaje por pantalla. Tambin se ha usado el operador de supresin de errores "@ ". Al incluir este fichero de configuracin en el siguiente script se comporta igual que en ejemplo 4.4.1., solo que mejorado para emitir mensajes de error.
<?php include("conectar_bd.php"); echo "Establecida la conexin a la base de datos";
Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

?>

Leer datos
Aqu nos encontramos con la funcin clave de este captulo. Se trata de la funcin mysql_query() . Su potencia es enorme ya que permite enviar una instruccin SQL, como las vistas en el captulo anterior, a la base de datos. Para leer datos la sentencia que usaremos ser obviamente un SELECT. mysql_query() La sintaxis de esta funcin es muy sencilla. La sentencia SQL es la misma que pondramos en la consola de MySQL, aunque no es necesario poner el punto y coma final de la sentencia SQL (que s al final de la instruccin PHP).
mysql_query(sentencia_SQL , referencia_bd )

Hay que tener en cuenta que esta funcin solo ejecuta la sentencia, no muestra ningn dato. Por ello devuelve un identificador del resultado que se usa en otras funciones para visualizar los valores devueltos por la consulta. Ejemplo 4.4.3. Aqu se muestra como se ejecuta una sentencia SQL.
<?php include("conectar_bd.php");$res = mysql_query("SELECT * FROM empleados", $con); ?>

Ejemplo 4.4.4. Mejoraremos la claridad del cdigo si guardamos la sentencia SQL en una variable.
<?php include("conectar_bd.php");$sql = "SELECT * FROM empleados"; $res = mysql_query($sql, $con); ?>

mysql_num_rows() Antes de acceder al resultado nos interesa saber cuantos registros se han obtenido. Concretamente una consulta podra no devolver ningn resultado y esto podra causar un error en nuestro cdigo. Esta funcin nos dar el nmero de filas que tiene un resultado obtenido de una consulta de tipo select (y slamente de este tipo, las consultas de insercin/borrado/actualizacin tienen otra funcin, mysql_affected_rows).
mysql_num_rows(identificador_de_resultado )

mysql_result()

Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

De acuerdo, ya hemos ejecutado la sentencia SQL, pero como accedemos al resultado?. Para ello nos sirve la funcin mysql_result() .
mysql_result(identificador_de_resultado, fila, nombre_campo )

El campo se puede seleccionar tambin mediante un nmero, que es su posicin entre los campos devueltos. Ejemplo 4.4.5. mysql_result() se suele usar en conjuncin con la funcin mysql_num_rows() para controlar las filas que se estn recuperando. La estructura ideal es un bucle for . En este ejemplo se muestra una consulta limitada en el rango (solo se recupera el campo nombre ).
<?php include("conectar_bd.php");$sql = "SELECT nombre FROM empleados"; $res = mysql_query($sql, $con); $filas = mysql_num_rows($res); for ($i = 0; $i < $filas; $i++) { $nombre = mysql_result($res, $i, "nombre"); echo "$nombre<br>"; }?>

Ejemplo 4.4.6. Aqu se pone junto todo lo que hemos visto hasta ahora y se muestra la tabla empleados dentro de una tabla HTML.
<?php include("conectar_bd.php"); ?> <table border="1"> <tr> <td>id</td> <td>nombre</td> <td>puesto</td> <td>fecha_nacimiento</td> <td>salario</td> </tr> <?php include("conectar_bd.php"); $sql = "SELECT * FROM empleados"; $res = mysql_query($sql, $con); $filas = mysql_num_rows($res); for ($i = 0; $i < $filas; $i++) { echo "<tr>"; $id = mysql_result($res, $i, "id"); echo "<td>$id</td>"; $nombre = mysql_result($res, $i, "nombre"); echo "<td>$nombre</td>"; $puesto = mysql_result($res, $i, "puesto"); echo "<td>$puesto</td>"; $f_nacimiento = mysql_result($res, $i, "fecha_nacimiento"); echo "<td>$f_nacimiento</td>"; $salario = mysql_result($res, $i, "salario"); echo "<td>$salario</td>"; echo "</tr>"; } ?></table>
Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

Ejemplo 4.4.7. Con un pequeo cambio en la sentencia SQL mostraremos las filas ordenadas por el nombre.
$sql = "SELECT * FROM empleados ORDER BY nombre";

Ejemplo 4.4.8. Y con solo otro pequeo cambio obtenemos un resultado filtrado.
$sql = "SELECT * FROM empleados WHERE salario > 1400";

Ejemplo 4.4.9. Con el sistema que hemos seguido que consiste en separar la sentencia SQL veamos lo fcil que resulta parametrizar un parmetro de bsqueda.
$salario = 1250; $sql = "SELECT * FROM empleados WHERE salario > $salario";

mysql_fetch_array() Es una alternativa a usar mysql_result() a la hora de recuperar los datos. La diferencia es que en lugar de extraerse las celdas de la tabla de una en una se recupera un array asociativo por cada fila que tiene como ndices los nombres de los campos. Cada vez que se llama a esta funcin recupera una de las filas resultado de la consulta, hasta que no queda ninguna. entonces devuelve FALSE.
mysql_fetch_array(identificador_de_resultado )

Ejemplo 4.4.10. Mediante esta funcin se puede conseguir un cdigo ms compacto, y que para algunos ser ms legible. Como cada llamada a la funcin recupera una fila y pasa a la siguiente no es necesario recuperar mediante mysql_num_rows() el nmero de filas que contiene el resultado. Este cdigo es equivalente al del ejercicio 4.4.6.
<?php include("conectar_bd.php"); ?> <table border="1"> <tr> <td>id</td> <td>nombre</td> <td>puesto</td> <td>fecha_nacimiento</td> <td>salario</td> </tr> <?php $sql = "SELECT * FROM empleados"; $res = mysql_query($sql, $con); $fila = mysql_fetch_array($res); while($fila) { echo "<tr>"; echo "<td>{$fila["id"]}</td>"; echo "<td>{$fila["nombre"]}</td>";
Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

echo "<td>{$fila["puesto"]}</td>"; echo "<td>{$fila["fecha_nacimiento"]}</td>"; echo "<td>{$fila["salario"]}</td>"; echo "</tr>"; $fila = mysql_fetch_array($res); } ?> </table>

Aadir datos
Para aadir datos no necesitamos conocer nada nuevo. Se usa la funcin mysql_query() pero en esta ocasin se encapsula una sentencia SQL INSERT, que aada datos. Ejemplo 4.4.11. Vamos a aadir un nuevo empleado. Para ello se usar la sentencia SQL "parametrizada", como si se hubiesen recibido los datos de un formulario y se quisieran guardar en la base de datos. Como la consulta es muy larga se ha troceado en varias lneas usando el operador concatenar cadena " . ".
<?php include("conectar_bd.php"); $nombre = "Paola"; $puesto = "Programador"; $fecha_nacimiento = "1958-01-23"; $salario = 1800; $sql = "INSERT INTO empleados " . "(nombre, puesto, fecha_nacimiento, salario) " . "VALUES " . "('$nombre', '$puesto', '$fecha_nacimiento', $salario)"; $res = mysql_query($sql, $con); ?>

Podemos comprobar que se ha realizado la insercin tecleando SELECT * FROM empleados desde la consola de MySQL o ejecutando el cdigo del ejercicio 4.4.6. (o del 4.4.10.) Modificar datos Una vez ms usamos la funcin mysql_query() , con una sentencia SQL del tipo UPDATE. Ejemplo 4.4.12. Vamoa a modificar los datos del empleado que adimos en la consulta anterior.
<?php include("conectar_bd.php"); $id = 5; //id del registro a modificar $nuevo_salario = 2100;$sql = "UPDATE empleados SET salario = $nuevo_salario "
Apuntes de Clase de Raul Renales PHP + Mysql

Curso Basico de PHP + MySql

. "WHERE id = $id";$res = mysql_query($sql, $con); ?>

Eliminar datos En esta ocasin usamos la funcin mysql_query() , con una sentencia SQL del tipo DELETE. Ejemplo 4.4.13. Vamos a modificar los datos del empleado que adimos en la consulta anterior.
<?php include("conectar_bd.ph p"); $id = 5; //Id del registro a borrar$sql = "DELETE FROM empleados WHERE id = $id";$res = mysql_query($sql, $con); ?>