Está en la página 1de 16

DESARROLLO

DE
APLICACIONES
WEB
2.5 Interacción con Base
de datos

Ing. Karla Abad Sacoto, Docente CISC - Software


Interacción
con Base de
datos:
Arquitectura

Fuente: Connecting PHP and SQL - Charles Severance

Ing. Karla Abad Sacoto, Docente CISC - Software


 PHP está evolucionando: hay tres formas de acceder a MySql
Múltiples formas  - Rutinas mysql_ no OO heredadas (obsoletas)
de acceder a  - Nuevo mysqli (versión OO que es similar a mysql_)
MySql  - PDO - Objetos de datos de PHP

Ing. Karla Abad Sacoto, Docente CISC - Software


 La extensión PDO (PHP Data Objects) de PHP
consiste de una capa de abstracción para acceder a
diferentes tipos de bases de datos.
 Utilizando PDO se logran estandarizar los
Acceso a diferentes mecanismos para realizar la conexión a
Bases de una base de datos, así como recuperar y modificar
información.
datos con
 Sin embargo, PDO no estandariza SQL lo que
PDO significa que se debe lidiar con las diferentes
sintaxis de las instrucciones en cada administrador
de bases de datos.

Ing. Karla Abad Sacoto, Docente CISC - Software


Manejadores de
bases de datos
 Para cada base de datos
existe un manejador
(driver) específico, que
debe estar habilitado en el
archivo de configuración
de PHP (el archivo php.ini).
Los manejadores se
administran mediante
extensiones de PHP, las
cuales tienen nombres
finalizando con dll en
Windows y con so en Unix.

Ing. Karla Abad Sacoto, Docente CISC - Software


Para realizar una nueva conexión se debe crear una instancia del
objeto PDO. Este constructor acepta una serie de parámetros de
conexión (string de conexión) que pueden ser específicos para cada
sistema de bases de datos.
Si no se logra establecer la conexión se producirá una excepción
(PDOException).

Si la conexión es exitosa, una instancia de PDO será devuelta.


Conexiones
La conexión permanece activa por todo le ciclo de vida del
objeto PDO.

Para cerrar la conexión, se debe destruir el objeto asegurándose


que toda referencia sea eliminada, o bien, PHP cerrará la conexión
automáticamente cuando el programa finalice.

Ing. Karla Abad Sacoto, Docente CISC - Software


DROP DATABASE IF EXISTS bddaw;
CREATE DATABASE bddaw;
USE bddaw;

CREATE TABLE usuarios(


us_id INTEGER NOT NULL
AUTO_INCREMENT PRIMARY KEY,
us_nombres VARCHAR(128),
Ceando una us_apellidos VARCHAR(128),
us_email VARCHAR(128),
bdd y tabla us_password VARCHAR(128),
INDEX(us_email)
para ejemplo ) ENGINE=InnoDB CHARSET=utf8;

INSERT INTO usuarios (us_nombres, us_apellidos,


us_email, us_password) VALUES ('Carlos','Gomez
Suarez','cgoms@empresa.com','123');
INSERT INTO usuarios (us_nombres, us_apellidos,
us_email, us_password) VALUES ('Juan','Aldaz
Noa','jaldn@empresa.com','123');

Ing. Karla Abad Sacoto, Docente CISC - Software


Primera Prueba pdo.php
<?php
$pdo = new
PDO('mysql:host=localhost;port=8889;dbname=bdddaw', ‘root',
'');
// See the "errors" folder for details...
$pdo->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);

third.php

<?php Array(
Obteniendo Datos
echo "<pre>\n"; [us_id] => 1
require_once "pdo.php"; [us_nombres] => Carlos
[us_apellidos] => Gomez Suare
[us_email] => cgoms@empresa.c
$stmt = $pdo->query("SELECT * FROM users");
[us_password] => 123
while ($row = $stmt- )
>fetch(PDO::FETCH_ASSOC)){ Array(
print_r($row); [us_id] => 2
} [us_nombres] => Juan
echo "</pre>\n";?> [us_apellidos] => Aldaz Noa
[us_email] => jaldn@empresa.c
[us_password] => 123
)

Ing. Karla Abad Sacoto, Docente CISC - Software


Insertando Datos
usuarioInsertar.php
<?php
require_once "pdo.php";
if ( isset($_POST['name']) && isset($_POST['email']) && isset($_POST['password']))
{
$sql = "INSERT INTO usuarios (us_nombres, us_apellidos, us_email, us_password)
VALUES (:nom,:apell,:email,:pass)";
echo("<pre>\n".$sql."\n</pre>\n");
$stmt = $pdo->prepare($sql);
$stmt->execute(array(
':nom' => $_POST['name'], ':apell' => $_POST[‘lastname'], ':email' =>
$_POST['email'], ':pass' => $_POST['password']));
Obteniendo Datos
}
?><html><head></head><body>
<p>Agregar un nuevo usuario</p>
<form method="post">
<p>Name:<input type="text" name="name" size="40"></p>
<p>Name:<input type="text" name=" lastname" size="40"></p>
<p>Email:<input type="text" name="email"></p>
<p>Password:<input type="password" name="password"></p>
<p><input type="submit" value=“Agregar Nuevo"/></p>
</form>
</body> Ing. Karla Abad Sacoto, Docente CISC - Software
Obteniendo Datos
usuarioConsultar.php
<html><head></head><body><table border="1">
<?php
require_once "pdo.php";
$stmt = $pdo->query("SELECT us_nombres, us_apellidos,
us_email, us_password FROM usuarios");
while ( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
echo "<tr><td>";
echo $row['us_nombres'];
echo "</td><td>"; Obteniendo Datos
echo $row['us_apellidos'];
echo "</td><td>";
echo $row[‘us_email'];
echo "</td></tr>\n";
}
?>
</table>
<a href=“usuarioInsertar.php”>Agregar un nuevo usuario</a>
</body></html> Ing. Karla Abad Sacoto, Docente CISC - Software
Eliminando Datos
usuarioEliminar.php

<?php
require_once "pdo.php";
if ( isset($_POST['delete']) &&
isset($_POST['usuario_id']) ) {
$sql = "DELETE FROM usuarios WHERE
us_id = :id";
echo "<pre>\n$sql\n</pre>\n";
Obteniendo Datos
$stmt = $pdo->prepare($sql);
$stmt->execute(array(':id' =>
$_POST['usuario_id']));
} ?>

Ing. Karla Abad Sacoto, Docente CISC - Software


Eliminando Datos
usuarioEliminar.php
<html><head></head><body><table border="1">
<?php
$stmt = $pdo->query("SELECT us_nombres, us_apellidos, us_email, us_password FROM
usuarios");
while ( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
echo "<tr><td>";
echo $row['us_nombres'];
echo "</td><td>";
echo $row['us_apellidos'];
echo "</td><td>"; Obteniendo Datos
echo $row[‘us_email'];
echo "</td></td>";
echo('<form method="post"><input type="hidden" ');
echo('name="usuario_id" value="'.$row['us_id'].'">'."\n");
echo('<input type="submit" value="Del" name="delete">');
echo("\n</form>\n");
echo("</td></tr>\n");
} ?>
</table>
<a href=“usuarioInsertar.php”>Agregar un
Ing. Karla Abad Sacoto, nuevo
Docente usuario</a>
CISC - Software
</body></html>
Recuperación de datos

 El método PDOStatement::fetch permite obtener la siguiente


fila de un conjunto de resultados de una consulta. Esta
instrucción tiene varios estilos de recuperación, entre ellos:
 PDO::FETCH_NUM: Retorna la siguiente fila como un arreglo
indexado por posición.
 PDO::FETCH_ASSOC: Retorna la siguiente fila como un arreglo
indexado por el nombre de la columna.
 PDO::FETCH_OBJ: Retorna la siguiente fila como un objeto
anónimo con los nombres de las columnas como propiedades.
 PDO::FETCH_CLASS: Retorna la siguiente fila como un objeto de
la clase especificada con los nombres de las columnas como
propiedades.
 Si se produce un error, la instrucción fetch retornará FALSE.

Ing. Karla Abad Sacoto, Docente CISC - Software


Ing. Karla Abad Sacoto, Docente CISC - Software
Invocación
 Para llamar a un procedimiento almacenado desde
de una aplicación PHP, ejecute una sentencia de SQL
procedimient CALL. El procedimiento que invoca puede incluir
parámetros de entrada (IN), parámetro de salida
os (OUT) y parámetros de entrada y salida.
almacenados

Ing. Karla Abad Sacoto, Docente CISC - Software


Llamar a un procedimiento almacenado con un parámetro de salida

Ejemplos
Llamar a un procedimiento almacenado con un parámetro de entrada/salida

Ing. Karla Abad Sacoto, Docente CISC - Software

También podría gustarte