Your SlideShare is downloading. ×
Iniciación PHP 5. PHP y MySQL
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Iniciación PHP 5. PHP y MySQL

7,520
views

Published on

Conexión a base de datos con PHP 5 utilizando la librería PDO y mysqli.

Conexión a base de datos con PHP 5 utilizando la librería PDO y mysqli.

Published in: Technology

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,520
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
289
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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