Documentos de Académico
Documentos de Profesional
Documentos de Cultura
elementos
adicionales
disponibles
para
su
descarga
en
esta
pgina.
Los
captulos
del
libro:
Introduccin - Introduccin a MySQL - Utilizar las funciones MySQL - Construir una base de
datos en MySQL - Tcnicas avanzadas con MySQL - Introduccin a PHP - Utilizar las funciones
PHP - Escribir funciones y clases PHP - Gestionar los errores en un script PHP - Gestionar los
formularios y los vnculos con PHP - Acceder a una base de datos MySQL - Gestionar las
sesiones - Anexos
Olivier HEURTEL
Despus de ocho aos pasados en una empresa de servicios, donde ha ocupado con xito los puestos de Desarrollador,
Jefe de Proyecto y finalmente Director de Proyectos, Olivier HEURTEL ha iniciado una actividad de
Consultor/Formador independiente especializado en bases de datos (Oracle), desarrollo Web (PHP) y sistemas
decisionales. Est certificado como Oracle Certified Professional.
Objetivo de la obra
El objetivo de este libro es iniciar al lector en el desarrollo de un sitio web dinmico e
interactivo mediante PHP y MySQL.
Para alcanzar este objetivo, este libro estudia con detalle los elementos necesarios para la
programacin de un sitio web dinmico e interactivo:
utilizacin del lenguaje SQL (Structured Query Language - lenguaje estndar de acceso a
bases de datos relacionales) para consultar y modificar los datos de una base de datos
MySQL;
gestin de los archivos, incluida la transferencia de archivos desde el equipo del usuario
hacia el servidor ("file upload").
2. MySQL
MySQL es el sistema de administracin de bases de datos relacionales (RDBMS) de cdigo
abierto ms extendido del mundo. Est desarrollado por MySQL AB, una empresa sueca.
La primera versin de MySQL apareci en 1995. Esta primera versin fue creada para un uso
personal a partir de mSQL.
En 2000, la versin 3.23 pas a tener licencia GPL (General Public License).
En 2003, la versin 4, aparecida en 2001, se declar estable. Esta versin aport numerosas
funcionalidades y mejoras: operador UNION, DELETE para varias tablas, nuevas opciones para
la gestin de los privilegios, mejora del rendimiento, subconsultas (4.1), etc.
En 2005, la versin 5, aparecida en 2003, se declar estable. Esta destacada versin introdujo
numerosas caractersticas que faltaban en MySQL: rutinas, triggers, vistas.
A inicios de 2013, se distribuy la versin 5.6.
MySQL est disponible con dos licencias diferentes:
La licencia GPL.
Si usted utiliza MySQL en un producto no comercial, puede utilizar MySQL con su licencia GPL
(versin MySQL Community Server). Si utiliza MySQL en un producto comercial, o si desea
tener asistencia tcnica para el programa, debe adquirir una licencia comercial (versin MySQL
Enterprise).
Direccin
Contenido
www.php.net
www.mysql.com
http://www.programacion.com/php/
www.zonaphp.com
www.zend.com
www.easyphp.org
http://www.apachefriends.org/en/xampp.html
Obviamente, esta lista no es exhaustiva, pero todos los sitios web presentes ofrecen numerosos
vnculos hacia otros sitios. No lo dude y navegue por ellos.
Todos los ejemplos de este libro han sido probados con XAMPP Linux 1.8.3 (MySQL 5.6.12 y
PHP 5.5.3).
Convenciones de escritura
1. PHP
La sintaxis de las funciones PHP se describe de la siguiente manera en este libro:
tipo_retorno nombre_funcin(tipo_parmetro nombre_parmetro)
tipo_retorno
nombre_funcin
Nombre de la funcin.
tipo_parmetro
nombre_parmetro
parmetro,
la
Ejemplo
tipo_retorno nombre_funcin()
Los parmetros opcionales se indican entre corchetes ( []).
Ejemplo
tipo_retorno nombre_funcin([tipo_parmetro nombre_parmetro])
Si la funcin acepta varios parmetros, estos ltimos se indican, separados por una coma,
segn la misma convencin.
Ejemplo
tipo_retorno
nombre_funcin(tipo_parmetro_1
tipo_parmetro_2 nombre_parmetro_2)
nombre_parmetro_1,
2. MySQL
La sintaxis de las sentencias SQL se describe de la siguiente manera en este libro:
PALABRA EN
MAYSCULAS
palabra en
minsculas
[]
Clusula opcional.
[,...]
{}
palabra
subrayada
Valor predeterminado.
palabra en
cursiva
| id_coleccion
+----+--------------------------------+---------------+
|
1 |
1 |
2 |
4 | BusinessObjects 6
1 |
5 | MySQL 5 - Instalacin
1 |
3 |
7 | MySQL 5 y PHP 5
4 |
+----+--------------------------------+---------------+
coleccion
+----+--------------------------+
| id | nombre
+----+--------------------------+
|
1 | Recursos informticos
2 | TechNote
3 | Prcticas tcnicas
4 | Pack Tcnico
+----+--------------------------+
En
este
ejemplo,
las
tablas libro y coleccion estn
vinculadas
columnas id_coleccin de la tabla libro e id de la tabla coleccion.
por
las
La interaccin con una base de datos relacional se realiza gracias al lenguaje SQL (Structured
Query Language). Este lenguaje permite la lectura y la actualizacin de los datos, as como la
definicin de la organizacin de los datos, la gestin de la seguridad, la mejora de la
integridad, etc. El lenguaje SQL es un lenguaje normalizado, pero los diferentes editores de
bases de datos no respetan ntegramente el estndar.
Una normalizacin llevada al extremo puede afectar al rendimiento de las consultas que deben
leer un gran nmero de tablas. Para mejorar el rendimiento de las lecturas, es posible
invertir el proceso de normalizacin del modelo, agrupando tablas, a riesgo de tener datos
redundantes en las diferentes filas. Las bases de datos de los sistemas de toma de decisiones,
que realizan sobre todo consultas normalmente complejas, siguen a menudo este
procedimiento. Al contrario, las bases de datos de los sistemas transaccionales, que efectan
principalmente pequeas consultas sencillas y muchas actualizaciones, respetan el principio de
normalizacin.
En una base de datos relacional, cada tabla almacena la informacin relativa a un objeto de
trabajo concreto o abstracto que debe ser identificado.
En la tabla, cada columna almacena informacin unitaria (atributo, propiedad) que caracteriza
una fila de la tabla. Cada columna posee un tipo de datos (entero, cadena de caracteres, fecha,
etc.) y puede ser obligatorio o no.
Una columna o combinacin de columnas que identifica de manera nica una fila de una tabla
se denomina clave candidata. El valor de una clave candidata es diferente para todas las filas
de la tabla (no puede repetirse en ningn caso). Una clave candidata puede estar constituida
por una columna arbitraria utilizada especficamente para ello.
La clave primaria de una tabla es una de las claves candidatas de la tabla, elegida ms o
menos arbitrariamente, pues la clave primaria debe ser tambin obligatoria: hay una nica
clave primaria por tabla. Las otras claves candidatas de la tabla se denominan claves nicas.
Una columna o combinacin de columnas de una tabla que hace referencia a una clave
candidata de otra tabla (normalmente, la clave primaria) se denomina clave externa. Una tabla
puede tener varias claves externas.
Ejemplo
El esquema anterior presenta el modelo de la base de datos utilizada en este libro. Este
modelo es un modelo simplificado de gestin de los libros de una editorial.
Este modelo incluye las siguientes tablas:
autor
tema
datos, lenguaje de programacin, etc.). Los temas se organizan en dos niveles: tema
principal y subtema. Un subtema est asociado a un tema primario por mediacin
de la columnaid_primario. Para un tema primario, la
columna id_primarioest vaca.
coleccion
promocion
libro
autor_libro
Relacin entre los autores y los libros: un autor puede escribir varios libros y un
libro puede tener varios autores.
tema_libro
Relacin entre los temas y los libros: un tema puede englobar varios libros y un
libro puede abarcar varios temas.
claves
claves
la
la
tabla autor)
tabla tema)
La tabla tema incluye una clave externa: id_primario (hacia la tabla tema).
Inicialmente, la cuenta root no tiene contrasea y dispone de todos los privilegios sobre todas las bases de datos del
servidor MySQL. En cambio, slo puede conectarse localmente (a partir del mismo servidor).
En el captulo Construir una base de datos en MySQL, veremos cmo crear otros usuarios y asignarles privilegios.
-h host
-u usuario
Nombre de usuario para la conexin (nombre del usuario actual del sistema
operativo de manera predeterminada).
p[contrasea]
nombre_base
Ejemplo
[root@xampp ~]# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.6.12 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights
reserved.
mysql>
En este ejemplo, la conexin se realiza localmente, sin contrasea, como usuario root. Como el usuario actual
es root en el sistema operativo, puede obtenerse el mismo resultado escribiendo simplemente el comando mysql:
[root@xampp ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
...
Si se requiere una contrasea y no desea introducirla en la lnea de comandos, puede utilizar el comando siguiente para
conectarse:
[root@xampp ~]# mysql -u root -p
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
...
Si se requiere una contrasea e intenta conectarse sin contrasea, obtendr un error:
ERROR 1045 (28000): Access denied for user root@localhost
(using password: NO)
Asimismo, si intenta conectarse a partir de un equipo que no est autorizado, obtendr un error similar.
En la interfaz de la lnea de comandos podr introducir comandos del cliente mysql, o bien consultas SQL.
Los comandos del cliente mysql son interpretados directamente por el cliente mysql. Este comando debe escribirse
en una sola lnea y la utilizacin del punto y coma al final del comando es innecesaria. Los comandos del
cliente mysql no son sensibles a las maysculas y minsculas, y pueden introducirse, por lo tanto, de las dos formas.
Las consultas SQL se envan al servidor para su ejecucin. Un consulta SQL puede escribirse en varias lneas y debe
terminarse mediante un punto y coma. Los comandos del cliente mysql no son sensibles a las maysculas y
minsculas, y pueden introducirse, por lo tanto, de las dos formas.
Los comandos del cliente mysql ms utilizados son los siguientes:
exit o quit
Sale de la aplicacin.
use nombre_base
source archivo_script
delimiter caracteres
Ejemplo
[root@xampp ~]# mysql -u root
Welcome to the MySQL monitor.
...
+--------------------+
| information_schema |
| cdcol
| mysql
| performance_schema |
| phpmyadmin
| test
+--------------------+
6 rows in set (0.01 sec)
mysql> exit
Bye
[root@xampp ~]#
Ms adelante, explicaremos la sintaxis de la sentencia SQL SELECT, as como la base de
datosinformation_schema.
3. MySQL Workbench
MySQL Workbench es una aplicacin grfica que permite editar y ejecutar consultas SQL en
una base de datos MySQL as como administrar sus bases de datos.
Puede
descargar
MySQL
Workbench
en
la
siguiente
direccin:http://dev.mysql.com/downloads/tools/workbench. El producto est disponible para
las plataformas Windows, Linux y Mac OS X.
Con un clic en el icono ubicado al lado del texto MySQL Connections podr crear una nueva
conexin a travs del siguiente cuadro de dilogo: