Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ju a n Pa vón M e st r a s
D e p. I n ge n ie r ía de l Soft w a r e e I n t e lige n cia Ar t ificia l
Fa cu lt a d de I n for m á t ica
Un ive r sida d Com plu t e n se M a dr id
PHP
MySQL
Sist em a de Gest ión de Base de Dat os Relacional
La inform ación se guarda en t ablas
• Una t abla es una colección de dat os relacionados
• Una t abla const a de colum nas ( cam pos) y filas ( regist ros)
• Las t ablas se enlazan por relaciones ent re colum nas
I m plem ent a casi t odo el est ándar SQL ( St ruct ured Query
Language)
Código abiert o
Act ualm ent e de Oracle, que adquirió Sun, que t enía MySQL AB
Escalable
Aplicaciones pequeñas y grandes ( m illones de regist ros)
Clie n t e s Pe didos
Pr odu ct os
nif * num ero *
id *
nom bre fecha
nom bre
direccion client e
precio
em ail product o
descripcion
t elefono cant idad
* Cla ve pr im a r ia ( los obj et os en est a colum na son únicos y no nulos) . Será indexada.
* * Se pueden definir t am bién ín dice s para m ej orar la eficiencia de las búsquedas
* * * Las cla ve s for á n e a s ( for e ign k e ys) ident ifica una colum na ( o grupo de
colum nas) en una t abla que se refiere a ot ra colum na ( o grupo de colum nas) en ot ra
t abla, generalm ent e la clave prim aria en la t abla referenciada.
Cont ribuyen a gest ionar la int egridad de la base de dat os: no se puede crear un
pedido de un client e o un product o que no exist an.
Las claves foráneas deberían indexarse porque se usarán para seleccionar regist ros
con frecuencia.
Creación de t ablas
La prim era t abla es la de client es, con cinco cam pos
nif: servirá com o prim ary key ( el nif es único)
nom bre: de em presa o de persona ( sería nom bre + apellidos)
• Se puede indexar para hacer búsquedas por est e cam po
direccion
em ail
t elefono: com o st ring para perm it ir uso de caract eres no num éricos
Tam bién se pueden int roducir a t ravés del program a PHP que
recupera la inform ación que un usuario haya int roducido en un
form ulario de una página web
En la pest aña Browse se pueden ver los regist ros de la base de
dat os y m odificar cam pos de los m ism os
I nt ent a cam biar el nom bre de un product o que t iene algún pedido
• Observa el efect o de haber definido la polít ica UPDATE: CASCADE
cuando se est ableció la FOREI GN KEY
Servidor Web
Cliente
«request»
Intérprete PHP
código (Genera HTML)
HTML
Busca página index.php
Consulta
index.php
Repositorio Base de
de páginas datos
2 . Uso de la ba se de da t os
• Envío de operación SQL a la base de dat os
• Recepción y t rat am ient o de los result ados
• Liberar m em oria de result ados
3 . D e scon e x ión
$empresa="Empresa%";
$query="SELECT * FROM clientes WHERE nombre LIKE '$empresa'";
$resultado=$mysqli‐>query($query)
or die ($mysqli‐>error. " en la línea ".(__LINE__‐1));
$numregistros=$resultado‐>num_rows;
echo "<p>El número de clientes con nombre Empresa* es: ",$numregistros,".</p>";
$query="SELECT * FROM clientes";
$resultado=$mysqli‐>query($query)
or die ($mysqli‐>error. " en la línea ".(__LINE__‐1));
$numregistros=$resultado‐>num_rows;
echo "<p>El número de clientes con nombre Empresa* es: ",$numregistros,".</p>";
echo "<table border=2><tr><th>NIF</th> <th>Nombre</th> <th>Dirección</th>
<th>Email</th> <th>Teléfono</th></tr>";
while ($registro = $resultado‐>fetch_assoc()) {
echo "<tr>";
foreach ($registro as $campo)
echo "<td>",$campo, "</td>";
echo "</tr>";
}
echo "</table>";
$resultado‐>free();
SQL
I N SERT
I nsert a nuevos elem ent os en una t abla
• Crea un nuevo client e
INSERT INTO clientes (nif, nombre, direccion, email, telefono)
VALUES ("M3885337J", "Empresa Uno", "Calle Uno, Madrid",
"jefe@empresauno.com", "91 2347898")
UPD ATE
Act ualiza cam pos de una t abla
• Modifica el im port e del product o "Producto1"
UPDATE productos SET precio = 399.99 WHERE nombre="Producto1"
D ELETE
Elim ina regist ros de una t abla
• Elim ina pedidos con m ás de 30 días de ant igüedad
DELETE FROM pedidos WHERE fecha < CURDATE()‐10
Bibliografía
Manual PHP oficial
ht t p: / / www.php.net / m anual/ es/ index.php
Sit io oficial de phpMyAdm in: ht t p: / / www.phpm yadm in.net
I nt roducción sencilla al uso de phpMyAdm in y php con MySQL
ht t p: / / www.yourwebskills.com / dbbackground.php
ht t p: / / www.yourwebskills.com / beginningm ysql.php
Libros
S. Suehring, T. Converse, J. Park. PHP6 and MySQL Bible. Wiley Pub.
2009
O. Heurt el. PHP y MySQL. Dom ine el desarrollo de un sit io Web
dinám ico e int eract ivo. Ediciones ENI 2009
M. Delisle. Dom inar phpMyAdm in para una adm inist ración efect iva de
MySQL. Packt Publishing ( 2007)
Se le ccion a r la ba se de da t os en el servidor
mysql_select_db($basedatos, $conexion)
• La base de dat os se especifica en la variable $basedatos
• Devuelve TRUE si t odo va bien, FALSE si hay algún error
mysql_select_db($bd, $conexion) or
die ("Error: No se puede usar la base de datos. ".mysql_error());
$query="SELECT * FROM clientes";
$resultado=mysql_query($query) or die ("Error en la query: ".mysql_error());
$numregistros=mysql_num_rows($resultado);
echo "<p>El número de registros de clientes es: ",$numregistros,".</p>";
$query="SELECT * FROM clientes";
$resultado=mysql_query($query) or die ("Error en la query: ".mysql_error());
$numregistros=mysql_num_rows($resultado);
echo "<p>El número de registros de clientes es: ",$numregistros,".</p>";
echo "<table border=2><tr><th>NIF</th> <th>Nombre</th> <th>Dirección</th>
<th>Email</th> <th>Teléfono</th></tr>";
mysql_free_result($resultado);