PDF de programación - Tema 06 - PHP y Acceso a Datos

Imágen de pdf Tema 06 - PHP y Acceso a Datos

Tema 06 - PHP y Acceso a Datosgráfica de visualizaciones

Publicado el 7 de Agosto del 2018
739 visualizaciones desde el 7 de Agosto del 2018
348,0 KB
8 paginas
Creado hace 9a (11/02/2015)
PHP y Acceso a Datos

11/02/2015

1. Introducción
2. Objetos de

acceso a datos
(PDO):

• El objeto PDO
• El objeto

PDOStatement

• Tratamiento

de errores

3. Buenas

prácticas
usando PHP

1. Introducción
2. Objetos de

acceso a datos
(PDO):

• El objeto PDO
• El objeto

PDOStatement

• Tratamiento

de errores

3. Buenas

prácticas
usando PHP

PHP y Acceso a Datos

Departamento de Lenguajes y Sistemas Informáticos

Grupo de Ingeniería del Software

Introducción

• SQL es el lenguaje común para trabajar con todas las BD


Las interfaces que los programadores usan para trabajar con
BDs varían mucho

Dependencia de las
aplicaciones respecto de la BD



Para resolver estos problemas se necesitan capas de
abstracción respecto de la BD (una interfaz común)

Introducción a la Ingeniería del Software y a los Sistemas de Información

1

1
1
1
1
0
0
2
2



,
,
o
o
r
r
o
o
T
T


n
n
á
á
r
r
u
u
D
D


r
r
o
o
d
d
a
a
m
m
A
A


e
e
d
d


o
o
ñ
ñ
e
e
s
s
i
i
D
D
©
©



1
1
0
2


,
o
r
o
T

n
á
r
u
D

r
o
d
a
m
A

e
d

o
ñ
e
s
i
D
©



IISSI

1

PHP y Acceso a Datos

11/02/2015

1. Introducción
2. Objetos de

acceso a datos
(PDO):

• El objeto PDO
• El objeto

PDOStatement

• Tratamiento

de errores

3. Buenas

prácticas
usando PHP

Objetos de Acceso a Datos

• Conceptos básicos:

– PDO = Portable Data Objects
– Es una librería proporcionada por PHP que permite acceder

a diferentes bases de datos, ¿cómo?

– PDO provee una capa de abstracción para el acceso a

datos, lo que permite que nuestro código sea
independiente de la BD que usemos

– El objeto más importante de PDO es precisamente PDO

que representa una conexión con la BD

– PDO forma parte de la distribución PHP desde la versión

v5.1

PDO

PDOStatement

PDODriver

PDOStatement

PDOException

Parámetros

Introducción a la Ingeniería del Software y a los Sistemas de Información

2

1. Introducción
2. Objetos de

acceso a datos
(PDO):

• El objeto PDO
• El objeto

PDOStatement

• Tratamiento

de errores

3. Buenas

prácticas
usando PHP

Objetos de Acceso a Datos

• Actores:

– Proveedor de datos (PDO Specific Driver)
– Conexión (Objeto PDO)
– Base de Datos (MySQL, MS SQL Server, Oracle)

tratamiento

<?

?>

PDO

PDO
Specific
Driver

PDO
Specific
Driver 2

BD

BD2

MS SQL
MySQL
Oracle

Introducción a la Ingeniería del Software y a los Sistemas de Información

3

1
1
0
2


,
o
r
o
T

n
á
r
u
D

r
o
d
a
m
A

e
d

o
ñ
e
s
i
D
©



1
1
0
2


,
o
r
o
T

n
á
r
u
D

r
o
d
a
m
A

e
d

o
ñ
e
s
i
D
©



IISSI

2

PHP y Acceso a Datos

11/02/2015

El Objeto PDO

• Definición del Objeto PDO:

1. Introducción
2. Objetos de

acceso a datos
(PDO):

• El objeto PDO
• El objeto

PDOStatement

• Tratamiento

de errores

3. Buenas

prácticas
usando PHP

– Este objeto representa una conexión con una base de
datos, y nos permite ejecutar consultas y obtener sus
resultados

– Su uso habitual es el siguiente:

<?
$host = 'oci:dbname=localhost/XE';
$username = 'username';
$password = 'password';
try {

¡¡¡ DEBEMOS INDICAR
EL MODO DE ERROR
DE EXCEPCIONES PARA
QUE LAS LANCE !!!

$con = new PDO($host,$username,$password);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

echo ’Conectados a la BD’;

// Alguna operación sobre la BD

// Cerramos la conexión
$con = null;

}
catch( PDOException $e ) {

// tratamiento del error
echo “error de conexión: “ . $e->GetMessage();

Si no capturamos la
excepción, el servidor
mostrará la traza
¡¡¡ incluyendo el usuario
y password de la BD !!!

}
?>

Introducción a la Ingeniería del Software y a los Sistemas de Información

4

1. Introducción
2. Objetos de

acceso a datos
(PDO):

• El objeto PDO
• El objeto

PDOStatement

• Tratamiento

de errores

3. Buenas

prácticas
usando PHP

El Objeto PDO

• Métodos de PDO:

– PDO( cadenaConexión, [usuario], [pwd], [opts]): abre la

conexión con la BD:

• La cadena de conexión depende del tipo de BD
• Entre las opciones de configuración, podemos hacer

persistente la conexión:

$con = new PDO($host,$user,$pass,

array(PDO::ATTR_PERSISTENT => true));
– exec(SQL): ejecuta una instrucción SQL (INSERT, UPDATE,

DELETE) y devuelve el número de filas afectadas

– query(SQL): ejecuta una consulta SQL (“SELECT…”) y
devuelve un objeto PDOStatement con los resultados

– prepare(SQL): prepara una consulta SQL (“SELECT…”) y

devuelve un objeto PDOStatement para su posterior
ejecución

Introducción a la Ingeniería del Software y a los Sistemas de Información

5

1
1
0
2


,
o
r
o
T

n
á
r
u
D

r
o
d
a
m
A

e
d

o
ñ
e
s
i
D
©



1
1
0
2


,
o
r
o
T

n
á
r
u
D

r
o
d
a
m
A

e
d

o
ñ
e
s
i
D
©



IISSI

3

PHP y Acceso a Datos

11/02/2015

1. Introducción
2. Objetos de

acceso a datos
(PDO):

• El objeto PDO
• El objeto

PDOStatement

• Tratamiento

de errores

3. Buenas

prácticas
usando PHP

El Objeto PDOStatement

• Definición de PDOStatement:

– Representa una sentencia preparada para su ejecución
en la BD y tras su ejecución, el conjunto de resultados
asociado. Hay dos alternativas: Query y Prepare

<?
try {

// Se ejecuta directamente la consulta y devuelve resultados
$stmt= $con->query("SELECT …" );

catch(PDOException $e ) {// Tratamiento del error}
?>

<?
try {

// Preparar la consulta si se va a repetir múltples veces
$stmt = $con->prepare("SELECT … WHERE a=:data");
$stmt->bindParam(':data',$name);
$stmt->execute();

catch(PDOException $e ) {
// tratamiento del error
echo "error: “ . $e->GetMessage();

}
?>

Introducción a la Ingeniería del Software y a los Sistemas de Información

6

El Objeto PDOStatement

• Métodos de PDOStatement:

– bindParam(parámetros): asocia un valor a los parámetros

establecidos en la consulta

– execute(parámetros): ejecuta la consulta preparada usando

los valores introducidos en el array parámetros

– rowCount(): Devuelve el número de filas afectadas por la

consulta (no funciona en todas las BDs)

– columnCount(): Devuelve el número de columnas

1. Introducción
2. Objetos de

acceso a datos
(PDO):

• El objeto PDO
• El objeto

PDOStatement

• Tratamiento

de errores

3. Buenas

prácticas
usando PHP

<?
$calories = 150;
$colour = 'red';

$stmt = $con->prepare( 'SELECT name, colour, calories

FROM fruit WHERE calories < :calories AND colour = :colour‘ );

$stmt->execute(array(':calories' => $calories,':colour’ => $colour));
?>

Introducción a la Ingeniería del Software y a los Sistemas de Información

7

1
1
0
2


,
o
r
o
T

n
á
r
u
D

r
o
d
a
m
A

e
d

o
ñ
e
s
i
D
©



1
1
0
2


,
o
r
o
T

n
á
r
u
D

r
o
d
a
m
A

e
d

o
ñ
e
s
i
D
©



IISSI

4

PHP y Acceso a Datos

11/02/2015

El Objeto PDOStatement

• Recorrido del PDOStatement (2 opciones):

<?
// $stmtes un PDOStatementya ejecutado
foreach ($stmt as $fila) {

echo $fila["campo1”];

echo $fila["campoN”];

1. Introducción
2. Objetos de

acceso a datos
(PDO):

• El objeto PDO
• El objeto

PDOStatement

• Tratamiento

de errores

3. Buenas

prácticas
usando PHP

}
?>

}
?>

<?
// $stmtes un PDOStatementya ejecutado
$fila = $stmt->fetch();
while ($fila) {

echo $fila["campo1"];

echo $fila["campoN"];
$fila = $stmt->fetch();

fetch(): Devuelve la
siguiente fila del resultado
o false si es la última fila.

Introducción a la Ingeniería del Software y a los Sistemas de Información

8

1. Introducción
2. Objetos de

acceso a datos
(PDO):

• El objeto PDO
• El objeto

PDOStatement

• Tratamiento

de errores

3. Buenas

prácticas
usando PHP

Tratamiento de Errores

• Bloques try/catch en PHP con PDO:

– Todas las operaciones con objetos PDO pueden generar

excepciones que deben capturarse

– El objeto que lanzan en las excepciones es de tipo

PDOException, que es a su vez una subclase de Exception

– Exception tiene los siguientes métodos:

• getMessage(): devuelve el mensaje describe la

excepción

• getFile(): fichero en que ocurrió el error
• getLine(): línea en que ocurrió el error
• getTrace() y getTraceAsString(): devuelven la traza de

ejecución en el momento del error

• Tratamiento del error en el bloque catch:

– El código habitual en el bloque catch es liberar recursos y

avisar al usuario del error

Introducción a la Ingeniería del Software y a los Sistemas de Información

9

1
1
0
2


,
o
r
o
T

n
á
r
u
D

r
o
d
a
m
A

e
d

o
ñ
e
s
i
D
©



1
1
0
2


,
o
r
o
T

n
á
r
u
D

r
o
d
a
m
A

e
d

o
ñ
e
s
i
D
©



IISSI

5

PHP y Acceso a Datos

11/02/2015

Buenas Prácticas usando PHP

• Modularidación del código cuando se

trabaja con BD:

Datos en Session

1. Introducción
2. Objetos de

acceso a datos
(PDO):

• El objeto PDO
• El objeto

PDOStatement

• Tratamiento

de errores

3. Buenas

prácticas
usando PHP

formulario

<%

%>



¿errores?

no

exito

<%

%>

Lógica de Acceso a Datos

Base
de

Datos
Datos

Funciones
gestión “A”
<?
func insertA(p1,p2){
var SQL =“…”
….

}


?>

Funciones
gestión “B”
<?
func insertB(p1,p2){
var SQL =“…”
….

}


?>

Funciones
gestión “X”
<?
func insertX(p1,p2){
var SQL =“…”
….

}


?>

. . .

Introducción a la Ingeniería del Software y a los Sistemas de Información

10

Buenas Prácticas usando PHP

1. Introducción
2. Objetos de

acceso a datos
(PDO):

• El objeto PDO
• El objeto

PDOStatement

• Tratamiento

de errores

3. Buenas

prácticas
usando PHP

exito

<%

%>

gestiónBD

< ?
func conectarBD() {

return $dbh;}
func desconectarBD() {
…}
?

>

Gestión de “X”

< ?
func insertX($p1){
$dbh->…
….

}


? >

session_start();
include_once(“gestionBD.php”);
include_once(“gestionUsuarios.php”);
if (isset ($_SESSION[“formulario”]) {

$formulario = $_SESSION["formulario“];
unset ($_SESSION["formulario”]);
unset ($_SESSION["errores”]);

}
else Header("Location:formulario.php");
$conexion = conectarBD();

<?php

?>
<html>

<head> <title>Resultado del Registro</title></head>
<body><? if ( insertarUsuario($formulario[“nombre”],
$formulario[“direccion”], $conexion) {

?>

<div id="div_exito">

<h1>Ho
  • Links de descarga
http://lwp-l.com/pdf12913

Comentarios de: Tema 06 - PHP y Acceso a Datos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad