SlideShare une entreprise Scribd logo
1  sur  19
Curso de Introducción a PHP 5
Tema 4: PHP 5 y MySQL
*POO = Programación Orientada a Objetos
1. PDO. PHP Data Objects
2. MySQLi
Curso de Introducción a PHP 5
Tema 4: PHP 5 y MySQL
*POO = Programación Orientada a Objetos
1. PDO. PHP Data Objects
2. MySQLi
Curso de Introducción a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
PDO es una librería para conectarse a bases de datos.
PDO es una capa de abstracción de acceso a datos. No importa qué BD, siempre se
utilizan las mismas funciones.
PDO necesita tener instalado el driver específico de cada base de datos (pdo_mysql,
pdo_sqlite, pdo_odbc, ..)
PDO NO es una capa de abstración de acceso a base de datos (DBAL). No reescribe
código SQL ni simula propiedades no disponibles.
PDO está completamente orientado a objetos
Curso de Introducción a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Conectándonos a una base de datos (MySQL)
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
DNS
Conectándonos con “cuidado”
OPCIONALES
try {
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
} catch (PDOException $e) {
    print "Imposible conectar con la BD: " . $e->getMessage();
    die();
}
Curso de Introducción a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Cerrando la conexión con la base de datos
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
// Hacer algo
unset($dbh);
Ejecutando una petición SQL contra la base de datos (la mala manera)
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
foreach($dbh->query('SELECT * from FOO') as $row) {
  print_r($row);
}
Curso de Introducción a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Cerrando la conexión con la base de datos
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
// Hacer algo
unset($dbh);
Ejecutando una petición SQL contra la base de datos (la mala manera)
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
foreach($dbh->query('SELECT * from FOO') as $row) {
  print_r($row);
}
Curso de Introducción a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Prepared Staments. Plantillas SQL con parámetros
Ventajas de usar prepared statements:
1. La petición SQL sólo necesita ser analizada una única vez. Más rápido.
2. Más difícil ataques SQL-injection.
Tan importante que PDO emula esta característica incluso en aquellos motores de
bases de datos que no lo soportan.
API: http://www.php.net/manual/en/class.pdostatement.php
Curso de Introducción a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Prepared Statement sin parámetros
Prepared Statement con parámetros
$stmt = $dbh->prepare("SELECT * FROM FOO");
$stmt->exec();
$data = $stmt->fetchAll();
$name = 'one'; $value = 1;
$stmt = $dbh->prepare(
          "INSERT INTO FOO (name, value) VALUES (:name, :value)"
        );
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);
$stmt->execute();
Curso de Introducción a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Las transacciones en las bases de datos tienen dos propósitos
1. Mantener la base de datos en un estado “coherente” en caso de fallo del sistema.
2. Ejecutar el proceso de manera aislada.
Un ejemplo de transacción: transacción bancaria. O todo. O nada.
A: Atomic. O todo o nada
C: Consistent. O No se violan las restricciones de integridad (foreign keys)
I: Isolated. Los datos son bloqueados
D: Durable. La información se guarda de manera persistente
Curso de Introducción a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Una transacción con PDO
try {
  $dbh = new PDO('odbc:SAMPLE', $user, $pass);
  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $dbh->beginTransaction();
  $dbh->exec("INSERT INTO FOO (bar) values ('bar')");
  $dbh->commit();
  
} catch (Exception $e) {
  $dbh->rollBack();
}
Curso de Introducción a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Más información sobre PDO en
http://www.php.net/manual/en/book.pdo.php
Curso de Introducción a PHP 5
Tema 4: PHP 5 y MySQL
*POO = Programación Orientada a Objetos
1. PDO. PHP Data Objects
2. MySQLi
Curso de Introducción a PHP 5
4.2. MySQLi
Tema 4. PHP 5 y MySQL
MySQLi es realmente MySQL Improved Extension.
Implementa funcionalidad para conectarse a bases de datos MySQL 4.1+
Versión POO de las funciones mysql_xxx();
Curso de Introducción a PHP 5
4.2. MySQLi
Tema 4. PHP 5 y MySQL
Conéctandonos a una base de datos
$mysqli = new mysqli("localhost", "user", "password", "db_name");
Comprobando el estado de la conexión
if ($mysqli->connect_errno()) {
    printf("Error en la conexión: %sn", $mysqli->connect_err());
    exit();
}
Curso de Introducción a PHP 5
4.2. MySQLi
Tema 4. PHP 5 y MySQL
Cerrando la conexión con una base de datos
$mysqli = new mysqli("localhost", "user", "password", "db_name");
$mysqli->close();
Ejecutando una petición contra la base de datos
$query = "SELECT * FROM Ciudad";
$result = $mysqli->query($query);
while($row = $result->fetch_array())
{
echo $row['codigo_ciudad'];
}
Curso de Introducción a PHP 5
4.2. MySQLi
Tema 4. PHP 5 y MySQL
Utilizando prepared staments
$sql = 'INSERT INTO tablename VALUES(?, ?)';
$stmt = $mysqli->stmt_init();
$stmt->prepare($sql);
$stmt->bind_param(“is”, 1, “test”);
$stmt->execute();
$stmt->close()
Curso de Introducción a PHP 5
4.2. MySQLi
Tema 4. PHP 5 y MySQL
Utilizando prepared staments
$sql = 'INSERT INTO tablename VALUES(?, ?)';
$stmt = $mysqli->stmt_init();
$stmt->prepare($sql);
$stmt->bind_param(“is”, 1, “test”);
$stmt->execute();
$stmt->close() i Integer
d Decimal
s String
b Blob
Curso de Introducción a PHP 5
4.2. MySQLi
Tema 4. PHP 5 y MySQL
MySQLi no soporta transacciones, en su lugar debemos confiar en COMMIT y
ROLLBACK de la base de datos.
MySQLi por defecto implementa auto-commit, despues de cualquier consulta de hace
automáticamente un COMMIT a la base de datos.
Para desactivar este comportamiento
$mysqli->autocommit(FALSE);
Para forzar COMMIT y ROLLBACK
$mysqli->commit();
$mysqli->rollback();
Curso de Introducción a PHP 5
4.2. MySQLi
Tema 4. PHP 5 y MySQL
Más información sobre MySQLi
http://es.php.net/manual/en/book.mysqli.php

Contenu connexe

Tendances (20)

Iniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosIniciación PHP 5. Ejercicios
Iniciación PHP 5. Ejercicios
 
Curso php y_mysql
Curso php y_mysqlCurso php y_mysql
Curso php y_mysql
 
Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfony
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Frameworks de templates y xml
Frameworks de templates y xmlFrameworks de templates y xml
Frameworks de templates y xml
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Curso php y_my_sql
Curso php y_my_sqlCurso php y_my_sql
Curso php y_my_sql
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
2 7 ficheros_php
2 7 ficheros_php2 7 ficheros_php
2 7 ficheros_php
 
4.Programación con PHP y MySQL
4.Programación con PHP y MySQL4.Programación con PHP y MySQL
4.Programación con PHP y MySQL
 
Acceso a-base-de-datos-en-php
Acceso a-base-de-datos-en-phpAcceso a-base-de-datos-en-php
Acceso a-base-de-datos-en-php
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasos
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
php y mysql
php y mysqlphp y mysql
php y mysql
 
Guia programacionwebbasicophp
Guia programacionwebbasicophpGuia programacionwebbasicophp
Guia programacionwebbasicophp
 
php
phpphp
php
 
Manual PHP 7
Manual PHP 7Manual PHP 7
Manual PHP 7
 
PHP Tema 7 - Seguridad
PHP Tema 7 - SeguridadPHP Tema 7 - Seguridad
PHP Tema 7 - Seguridad
 
Manual de php con ejercicios
Manual de php con ejerciciosManual de php con ejercicios
Manual de php con ejercicios
 

En vedette

Php y MySQL
Php y MySQLPhp y MySQL
Php y MySQLKaris
 
Users - Desarrollo PHP + MySQL
Users - Desarrollo PHP + MySQLUsers - Desarrollo PHP + MySQL
Users - Desarrollo PHP + MySQLAndrés Pizarro
 
Buenas Prácticas de Programación en PHP
Buenas Prácticas de Programación en PHPBuenas Prácticas de Programación en PHP
Buenas Prácticas de Programación en PHPJesus Castagnetto
 
Curso TIC de PHP y MSQL Parte 3
Curso TIC de PHP y MSQL Parte 3Curso TIC de PHP y MSQL Parte 3
Curso TIC de PHP y MSQL Parte 3Wilian
 
Iniciación PHP 5. Ejemplos
Iniciación PHP 5. EjemplosIniciación PHP 5. Ejemplos
Iniciación PHP 5. EjemplosRightster
 
Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.Ángel Acaymo M. G.
 
Visual basic 6 (curso paso a paso)
Visual basic 6 (curso paso a paso)Visual basic 6 (curso paso a paso)
Visual basic 6 (curso paso a paso)Carlos Martinez
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.comoctabio
 
Php y my sql. tecnología para el desarrollo de aplicaciones web escrito por á...
Php y my sql. tecnología para el desarrollo de aplicaciones web escrito por á...Php y my sql. tecnología para el desarrollo de aplicaciones web escrito por á...
Php y my sql. tecnología para el desarrollo de aplicaciones web escrito por á...ingenran
 
Sesion Nº 04 Introducción A Php Operadores E Instrucciones
Sesion Nº 04   Introducción A Php   Operadores E InstruccionesSesion Nº 04   Introducción A Php   Operadores E Instrucciones
Sesion Nº 04 Introducción A Php Operadores E InstruccionesEdgar A. Cruz Huaman
 
Base datos mysql y visual basic
Base datos mysql y visual basicBase datos mysql y visual basic
Base datos mysql y visual basicRafael Tobar Jame
 
Programacion Estructurada en C - Antonakos
Programacion Estructurada en C - AntonakosProgramacion Estructurada en C - Antonakos
Programacion Estructurada en C - AntonakosGustavo Tello Pais
 

En vedette (20)

Php y MySQL
Php y MySQLPhp y MySQL
Php y MySQL
 
Users - Desarrollo PHP + MySQL
Users - Desarrollo PHP + MySQLUsers - Desarrollo PHP + MySQL
Users - Desarrollo PHP + MySQL
 
Buenas Prácticas de Programación en PHP
Buenas Prácticas de Programación en PHPBuenas Prácticas de Programación en PHP
Buenas Prácticas de Programación en PHP
 
Php.y.my sql
Php.y.my sqlPhp.y.my sql
Php.y.my sql
 
Curso TIC de PHP y MSQL Parte 3
Curso TIC de PHP y MSQL Parte 3Curso TIC de PHP y MSQL Parte 3
Curso TIC de PHP y MSQL Parte 3
 
Iniciación PHP 5. Ejemplos
Iniciación PHP 5. EjemplosIniciación PHP 5. Ejemplos
Iniciación PHP 5. Ejemplos
 
Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.
 
Visual basic 6 (curso paso a paso)
Visual basic 6 (curso paso a paso)Visual basic 6 (curso paso a paso)
Visual basic 6 (curso paso a paso)
 
php-mysql
php-mysqlphp-mysql
php-mysql
 
Includes y $GET
Includes y $GETIncludes y $GET
Includes y $GET
 
mejorando con php
mejorando con phpmejorando con php
mejorando con php
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.com
 
Php y my sql. tecnología para el desarrollo de aplicaciones web escrito por á...
Php y my sql. tecnología para el desarrollo de aplicaciones web escrito por á...Php y my sql. tecnología para el desarrollo de aplicaciones web escrito por á...
Php y my sql. tecnología para el desarrollo de aplicaciones web escrito por á...
 
Sesion Nº 04 Introducción A Php Operadores E Instrucciones
Sesion Nº 04   Introducción A Php   Operadores E InstruccionesSesion Nº 04   Introducción A Php   Operadores E Instrucciones
Sesion Nº 04 Introducción A Php Operadores E Instrucciones
 
Php - Operadores básicos
Php - Operadores básicosPhp - Operadores básicos
Php - Operadores básicos
 
Base datos mysql y visual basic
Base datos mysql y visual basicBase datos mysql y visual basic
Base datos mysql y visual basic
 
Programacion Estructurada en C - Antonakos
Programacion Estructurada en C - AntonakosProgramacion Estructurada en C - Antonakos
Programacion Estructurada en C - Antonakos
 
Introducción a PHP
Introducción a PHPIntroducción a PHP
Introducción a PHP
 
Desarrollo de sitios web con php y my sql
Desarrollo de sitios web con php y my sqlDesarrollo de sitios web con php y my sql
Desarrollo de sitios web con php y my sql
 
MVC
MVCMVC
MVC
 

Similaire à Iniciación PHP 5. PHP y MySQL

Similaire à Iniciación PHP 5. PHP y MySQL (20)

PDO: Capa de abstracción de base de datos con PHP
PDO: Capa de abstracción de base de datos con PHPPDO: Capa de abstracción de base de datos con PHP
PDO: Capa de abstracción de base de datos con PHP
 
Mysql adodb pdf_php
Mysql adodb pdf_phpMysql adodb pdf_php
Mysql adodb pdf_php
 
Fundamento de poo en php
Fundamento de poo en phpFundamento de poo en php
Fundamento de poo en php
 
Bases de datos con PHP y PDO
Bases de datos con PHP y PDOBases de datos con PHP y PDO
Bases de datos con PHP y PDO
 
Mysql java
Mysql javaMysql java
Mysql java
 
Bases de datos con PHP y Mysqli
Bases de datos con PHP y MysqliBases de datos con PHP y Mysqli
Bases de datos con PHP y Mysqli
 
Mysql3
Mysql3Mysql3
Mysql3
 
Curso php dia4
Curso php dia4Curso php dia4
Curso php dia4
 
Tutorial de php y my sql completo
Tutorial de php y my sql completoTutorial de php y my sql completo
Tutorial de php y my sql completo
 
S8-POO-4.2 BDD
S8-POO-4.2 BDDS8-POO-4.2 BDD
S8-POO-4.2 BDD
 
Introducción a Kohana Framework
Introducción a Kohana FrameworkIntroducción a Kohana Framework
Introducción a Kohana Framework
 
Introduccion al PHP.ppt
Introduccion al PHP.pptIntroduccion al PHP.ppt
Introduccion al PHP.ppt
 
Guía herramientas de BD PHP
Guía herramientas de BD PHPGuía herramientas de BD PHP
Guía herramientas de BD PHP
 
Guia herramientas de bd
Guia herramientas de bdGuia herramientas de bd
Guia herramientas de bd
 
Masterclass ADWE Madrid
Masterclass ADWE MadridMasterclass ADWE Madrid
Masterclass ADWE Madrid
 
S8-BDD
S8-BDDS8-BDD
S8-BDD
 
MOSKitt: Ingeniería Inversa de Bases de Datos con MOSKitt
MOSKitt: Ingeniería Inversa de Bases de Datos con MOSKittMOSKitt: Ingeniería Inversa de Bases de Datos con MOSKitt
MOSKitt: Ingeniería Inversa de Bases de Datos con MOSKitt
 
Framework kahana
Framework kahanaFramework kahana
Framework kahana
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2
 
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfPHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
 

Dernier

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilJuanGallardo438714
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxlosdiosesmanzaneros
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 

Dernier (15)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 

Iniciación PHP 5. PHP y MySQL

  • 1. Curso de Introducción a PHP 5 Tema 4: PHP 5 y MySQL *POO = Programación Orientada a Objetos 1. PDO. PHP Data Objects 2. MySQLi
  • 2. Curso de Introducción a PHP 5 Tema 4: PHP 5 y MySQL *POO = Programación Orientada a Objetos 1. PDO. PHP Data Objects 2. MySQLi
  • 3. Curso de Introducción a PHP 5 4.1. PDO. PHP Data Objects Tema 4. PHP 5 y MySQL PDO es una librería para conectarse a bases de datos. PDO es una capa de abstracción de acceso a datos. No importa qué BD, siempre se utilizan las mismas funciones. PDO necesita tener instalado el driver específico de cada base de datos (pdo_mysql, pdo_sqlite, pdo_odbc, ..) PDO NO es una capa de abstración de acceso a base de datos (DBAL). No reescribe código SQL ni simula propiedades no disponibles. PDO está completamente orientado a objetos
  • 4. Curso de Introducción a PHP 5 4.1. PDO. PHP Data Objects Tema 4. PHP 5 y MySQL Conectándonos a una base de datos (MySQL) $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); DNS Conectándonos con “cuidado” OPCIONALES try {     $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); } catch (PDOException $e) {     print "Imposible conectar con la BD: " . $e->getMessage();     die(); }
  • 5. Curso de Introducción a PHP 5 4.1. PDO. PHP Data Objects Tema 4. PHP 5 y MySQL Cerrando la conexión con la base de datos $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); // Hacer algo unset($dbh); Ejecutando una petición SQL contra la base de datos (la mala manera) $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); foreach($dbh->query('SELECT * from FOO') as $row) {   print_r($row); }
  • 6. Curso de Introducción a PHP 5 4.1. PDO. PHP Data Objects Tema 4. PHP 5 y MySQL Cerrando la conexión con la base de datos $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); // Hacer algo unset($dbh); Ejecutando una petición SQL contra la base de datos (la mala manera) $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); foreach($dbh->query('SELECT * from FOO') as $row) {   print_r($row); }
  • 7. Curso de Introducción a PHP 5 4.1. PDO. PHP Data Objects Tema 4. PHP 5 y MySQL Prepared Staments. Plantillas SQL con parámetros Ventajas de usar prepared statements: 1. La petición SQL sólo necesita ser analizada una única vez. Más rápido. 2. Más difícil ataques SQL-injection. Tan importante que PDO emula esta característica incluso en aquellos motores de bases de datos que no lo soportan. API: http://www.php.net/manual/en/class.pdostatement.php
  • 8. Curso de Introducción a PHP 5 4.1. PDO. PHP Data Objects Tema 4. PHP 5 y MySQL Prepared Statement sin parámetros Prepared Statement con parámetros $stmt = $dbh->prepare("SELECT * FROM FOO"); $stmt->exec(); $data = $stmt->fetchAll(); $name = 'one'; $value = 1; $stmt = $dbh->prepare(           "INSERT INTO FOO (name, value) VALUES (:name, :value)"         ); $stmt->bindParam(':name', $name); $stmt->bindParam(':value', $value); $stmt->execute();
  • 9. Curso de Introducción a PHP 5 4.1. PDO. PHP Data Objects Tema 4. PHP 5 y MySQL Las transacciones en las bases de datos tienen dos propósitos 1. Mantener la base de datos en un estado “coherente” en caso de fallo del sistema. 2. Ejecutar el proceso de manera aislada. Un ejemplo de transacción: transacción bancaria. O todo. O nada. A: Atomic. O todo o nada C: Consistent. O No se violan las restricciones de integridad (foreign keys) I: Isolated. Los datos son bloqueados D: Durable. La información se guarda de manera persistente
  • 10. Curso de Introducción a PHP 5 4.1. PDO. PHP Data Objects Tema 4. PHP 5 y MySQL Una transacción con PDO try {   $dbh = new PDO('odbc:SAMPLE', $user, $pass);   $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);   $dbh->beginTransaction();   $dbh->exec("INSERT INTO FOO (bar) values ('bar')");   $dbh->commit();    } catch (Exception $e) {   $dbh->rollBack(); }
  • 11. Curso de Introducción a PHP 5 4.1. PDO. PHP Data Objects Tema 4. PHP 5 y MySQL Más información sobre PDO en http://www.php.net/manual/en/book.pdo.php
  • 12. Curso de Introducción a PHP 5 Tema 4: PHP 5 y MySQL *POO = Programación Orientada a Objetos 1. PDO. PHP Data Objects 2. MySQLi
  • 13. Curso de Introducción a PHP 5 4.2. MySQLi Tema 4. PHP 5 y MySQL MySQLi es realmente MySQL Improved Extension. Implementa funcionalidad para conectarse a bases de datos MySQL 4.1+ Versión POO de las funciones mysql_xxx();
  • 14. Curso de Introducción a PHP 5 4.2. MySQLi Tema 4. PHP 5 y MySQL Conéctandonos a una base de datos $mysqli = new mysqli("localhost", "user", "password", "db_name"); Comprobando el estado de la conexión if ($mysqli->connect_errno()) {     printf("Error en la conexión: %sn", $mysqli->connect_err());     exit(); }
  • 15. Curso de Introducción a PHP 5 4.2. MySQLi Tema 4. PHP 5 y MySQL Cerrando la conexión con una base de datos $mysqli = new mysqli("localhost", "user", "password", "db_name"); $mysqli->close(); Ejecutando una petición contra la base de datos $query = "SELECT * FROM Ciudad"; $result = $mysqli->query($query); while($row = $result->fetch_array()) { echo $row['codigo_ciudad']; }
  • 16. Curso de Introducción a PHP 5 4.2. MySQLi Tema 4. PHP 5 y MySQL Utilizando prepared staments $sql = 'INSERT INTO tablename VALUES(?, ?)'; $stmt = $mysqli->stmt_init(); $stmt->prepare($sql); $stmt->bind_param(“is”, 1, “test”); $stmt->execute(); $stmt->close()
  • 17. Curso de Introducción a PHP 5 4.2. MySQLi Tema 4. PHP 5 y MySQL Utilizando prepared staments $sql = 'INSERT INTO tablename VALUES(?, ?)'; $stmt = $mysqli->stmt_init(); $stmt->prepare($sql); $stmt->bind_param(“is”, 1, “test”); $stmt->execute(); $stmt->close() i Integer d Decimal s String b Blob
  • 18. Curso de Introducción a PHP 5 4.2. MySQLi Tema 4. PHP 5 y MySQL MySQLi no soporta transacciones, en su lugar debemos confiar en COMMIT y ROLLBACK de la base de datos. MySQLi por defecto implementa auto-commit, despues de cualquier consulta de hace automáticamente un COMMIT a la base de datos. Para desactivar este comportamiento $mysqli->autocommit(FALSE); Para forzar COMMIT y ROLLBACK $mysqli->commit(); $mysqli->rollback();
  • 19. Curso de Introducción a PHP 5 4.2. MySQLi Tema 4. PHP 5 y MySQL Más información sobre MySQLi http://es.php.net/manual/en/book.mysqli.php