SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

La actualidad más candente

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
Andrés Amaya
 

La actualidad más candente (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
 

Destacado

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
Jesus 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 3
Wilian
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.com
octabio
 
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
 

Destacado (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
 

Similar a Iniciación PHP 5. PHP y MySQL

Curso php dia4
Curso php dia4Curso php dia4
Curso php dia4
cognos_uie
 
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
genaro martinez
 
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
mamaror
 
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
Raaulroodriguez
 

Similar a 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
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (12)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
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
 
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
 
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
 
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
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
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
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 

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