Sie sind auf Seite 1von 19

2010-2011

7-n y consu|tas MySL


Curso: Desarro||o de ap||cac|ones Web
Crlsuna uenLe, 8afael alaclos
lnLroduccln
1
3
Departamento de S|stemas Informncos
Lscue|a 1cn|ca Super|or de Ingen|er|a ICAI
Desarro||o de ap||cac|ones web
2011
Introducc|n
- P dlspone de llbrerlas para comunlcarse con dlversas bases
de daLos:
MySL (CpenSource, la que vamos a uullzar en esLe curso)
u8M (8erkeley)
lnformlx
MS SCL (Mlcroso)
Cracle 8
osLgreSCL (8erkeley-open source)
Sybase
4
Departamento de S|stemas Informncos
Lscue|a 1cn|ca Super|or de Ingen|er|a ICAI
Desarro||o de ap||cac|ones web
2011
Introducc|n
- cmo funclona?
GET prueba.php
S
Departamento de S|stemas Informncos
Lscue|a 1cn|ca Super|or de Ingen|er|a ICAI
Desarro||o de ap||cac|ones web
2011
L[emp|o de programa n
1. Abrlr la conexln con el servldor de base de daLos
2. Selecclonar la base de daLos
3. ConsLrulr la query
4. Lanzar la query
3. 8ucle para mosLrar reglsLro a reglsLro
6. Cerrar la conexln
Abrlr la conexln con la base de
daLos
2
7
Departamento de S|stemas Informncos
Lscue|a 1cn|ca Super|or de Ingen|er|a ICAI
Desarro||o de ap||cac|ones web
2011
Conex|n a |a base de datos
- lnsLruccln mysql_connecL(), [unLo con Lres parmeLros: hosL
al que nos conecLamos, nombre de usuarlo y conLrasena.
- Ln modo local (localhosL = 127.0.0.1)
<?php
$conn = mysql_connect("localhost","mysql_user","mysql_pwd");
if (!$conn) {
die('Error de conexin');
}
/* Cdigo aqu */
mysql_close($conn);
?>
8
Departamento de S|stemas Informncos
Lscue|a 1cn|ca Super|or de Ingen|er|a ICAI
Desarro||o de ap||cac|ones web
2011
Conex|n a |a base de datos
- 1amblen es poslble uullzar varlables y desarrollar funclones
<?php
function Conectar()
{
$host="localhost";
$user="mysql_user";
$pass="shhh";
$conn = mysql_connect($host,$user,$pass);
if (!$conn) {
die('Error de conexin');
}
return $conn;
}
Acceso.php
9
Departamento de S|stemas Informncos
Lscue|a 1cn|ca Super|or de Ingen|er|a ICAI
Desarro||o de ap||cac|ones web
2011
Se|ecc|n de |a base de datos
- Los cheros que accedan a la base de daLos lncluyen la
funcln.
<?php
include("acceso.php");
$conn=Conectar();
if (!mysql_select_db("prueba",$conn)) {
printf("ERROR: %s\n",mysql_error());
mysql_close($conn);
die("Error al cambiar de base de datos\n");
}
/* Cdigo aqu */
mysql_close($conn);
8eallzar querles
3
11
Departamento de S|stemas Informncos
Lscue|a 1cn|ca Super|or de Ingen|er|a ICAI
Desarro||o de ap||cac|ones web
2011
L[emp|o de consu|ta
- una query se e[ecuLa con mysql_query. Se recomlenda
comprobar el error.
$query="SELECT nombre, apellidos
FROM empleados
WHERE salario<10000;";
$result=mysql_query($query,$conn);
if (!$result) {
printf("Error en la query: ".mysql_error());
mysql_close($conn);
exit;
}
12
Departamento de S|stemas Informncos
Lscue|a 1cn|ca Super|or de Ingen|er|a ICAI
Desarro||o de ap||cac|ones web
2011
L[emp|o de consu|ta
- mysql_feLch_array convlerLe el resulLado de la query en un
array con Loda la lnformacln de un reglsLro.
- Los nombres de los elemenLos del array colnclden con los
uullzados en la query
$row=mysql_fetch_array($result);
while ($row) {
printf("Nombre: {$row['nombre']} {$row['apellidos']}<br>");
$row=mysql_fetch_array($result);
}
mysql_free_result($result);
13
Departamento de S|stemas Informncos
Lscue|a 1cn|ca Super|or de Ingen|er|a ICAI
Desarro||o de ap||cac|ones web
2011
kesumen de |as func|ones de acceso a MySL
- mysql_connecL() :ConecLar con el servldor de bases de daLos.
- mysql_selecL_db() :Selecclonar una base de daLos.
- mysql_query() : Lnvlar la lnsLruccln SCL a la base de daLos.
- mysql_num_rows($resulL) : CbLener numero de reglsLros
- mysql_feLch_array($resulL) : CbLener daLos
- mysql_free_resulL($resulL) : Llbera memorla
- mysql_close() : Cerrar la conexln con el servldor.
- mysql_error() : MuesLra el ulumo mensa[e de error
- mysql_real_escape_sLrlng() : Cbuene cadena segura (ver ms
adelanLe)
lormularlos y aspecLos bslcos de
segurldad
4
1S
Departamento de S|stemas Informncos
Lscue|a 1cn|ca Super|or de Ingen|er|a ICAI
Desarro||o de ap||cac|ones web
2011
Consu|ta basada en formu|ar|o
1. ulsenar pglna web uullzando un edlLor P1ML
2. Converur a P e lnserLar el cdlgo de acceso a daLos
3. CbLener y proLeger los daLos del formularlo
4. ConsLrulr la query
3. Cenerar la sallda
16
Departamento de S|stemas Informncos
Lscue|a 1cn|ca Super|or de Ingen|er|a ICAI
Desarro||o de ap||cac|ones web
2011
Arch|vo n
Cdigo inicial HTML
Query PHP
Cdigo nal HTML
17
Departamento de S|stemas Informncos
Lscue|a 1cn|ca Super|or de Ingen|er|a ICAI
Desarro||o de ap||cac|ones web
2011
Construcc|n de |a query
if (isset($_GET['salary'])) {
$salary=mysql_real_escape_string($_GET['salary']); //important
$query='SELECT firstname, lastname, salary FROM users
WHERE salary>={$salary};';
} else {
/* No filter */
$query='SELECT firstname, lastname, salary FROM users;';
}
$result=mysql_query($query,$conn);
if (!$result) {
die('Query error '.mysql_error());
}
$row=mysql_fetch_array($result);
while ($row) {
printf("<tr>\n");
printf("<td>{$row['firstname']}</td><td>{$row['lastname']}</td>");
printf("<td>{$row['salary']}</td></tr>");
$row=mysql_fetch_array($result);
}
mysql_free_result($result);
18
Departamento de S|stemas Informncos
Lscue|a 1cn|ca Super|or de Ingen|er|a ICAI
Desarro||o de ap||cac|ones web
2011
Aspectos de segur|dad
- por que es lmporLanLe mysql_real_escape_string?
query='SELECT name FROM users
WHERE salary<=10000;'
query='SELECT name FROM users
WHERE salary<=10000; drop table users'
10000; drop table users;
10000
Lscue|a 1cn|ca Super|or de Ingen|er|a ICAI
AlberLo Agullera 23
28013 Madrld
1el +34 91 342 28 00
lax + 34 91 342 31 76
lwww.lcal.upcomlllas.es
www.upcom|||as.es

Das könnte Ihnen auch gefallen