Iniciación PHP 5. PHP y MySQL
-
Upload
rightster -
Category
Technology
-
view
8.445 -
download
1
Transcript of Iniciación PHP 5. PHP y MySQL
Curso de Introduccin a PHP 5
Tema 4: PHP 5 y MySQL
*POO = Programacin Orientada a Objetos
1. PDO. PHP Data Objects2. MySQLi
Curso de Introduccin a PHP 5
Tema 4: PHP 5 y MySQL
*POO = Programacin Orientada a Objetos
1. PDO. PHP Data Objects2. MySQLi
Curso de Introduccin a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
PDO es una librera para conectarse a bases de datos.
PDO es una capa de abstraccin de acceso a datos. No importa qu BD, siempre se utilizan las mismas funciones.
PDO necesita tener instalado el driver especfico de cada base de datos (pdo_mysql, pdo_sqlite, pdo_odbc, ..)
PDO NO es una capa de abstracin de acceso a base de datos (DBAL). No reescribe cdigo SQL ni simula propiedades no disponibles.
PDO est completamente orientado a objetos
Curso de Introduccin a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Conectndonos a una base de datos (MySQL)
$dbh=newPDO('mysql:host=localhost;dbname=test',$user,$pass);
DNS
Conectndonos con cuidado
OPCIONALES
try{
$dbh=newPDO('mysql:host=localhost;dbname=test',$user,$pass);
}catch(PDOException$e){
print"Imposible conectar con la BD:".$e->getMessage();
die();
}
Curso de Introduccin a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Cerrando la conexin con la base de datos
$dbh=newPDO('mysql:host=localhost;dbname=test',$user,$pass);
// Hacer algo
unset($dbh);
Ejecutando una peticin SQL contra la base de datos (la mala manera)
$dbh=newPDO('mysql:host=localhost;dbname=test',$user,$pass);
foreach($dbh->query('SELECT*fromFOO')as$row){
print_r($row);
}
Curso de Introduccin a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Cerrando la conexin con la base de datos
$dbh=newPDO('mysql:host=localhost;dbname=test',$user,$pass);
// Hacer algo
unset($dbh);
Ejecutando una peticin SQL contra la base de datos (la mala manera)
$dbh=newPDO('mysql:host=localhost;dbname=test',$user,$pass);
foreach($dbh->query('SELECT*fromFOO')as$row){
print_r($row);
}
Curso de Introduccin a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Prepared Staments. Plantillas SQL con parmetros
Ventajas de usar prepared statements:
1. La peticin SQL slo necesita ser analizada una nica vez. Ms rpido.
2. Ms difcil ataques SQL-injection.
Tan importante que PDO emula esta caracterstica incluso en aquellos motores de bases de datos que no lo soportan.
API: http://www.php.net/manual/en/class.pdostatement.php
Curso de Introduccin a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Prepared Statement sin parmetros
Prepared Statement con parmetros
$stmt=$dbh->prepare("SELECT * FROM FOO");$stmt->exec();$data = $stmt->fetchAll();
$name='one'; $value=1;
$stmt=$dbh->prepare(
"INSERTINTOFOO(name,value)VALUES(:name,:value)" );
$stmt->bindParam(':name',$name);
$stmt->bindParam(':value',$value);
$stmt->execute();
Curso de Introduccin a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Las transacciones en las bases de datos tienen dos propsitos
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 transaccin: transaccin 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 informacin se guarda de manera persistente
Curso de Introduccin a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Una transaccin con PDO
try{
$dbh=newPDO('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 Introduccin a PHP 5
4.1. PDO. PHP Data Objects
Tema 4. PHP 5 y MySQL
Ms informacin sobre PDO en
http://www.php.net/manual/en/book.pdo.php
Curso de Introduccin a PHP 5
Tema 4: PHP 5 y MySQL
*POO = Programacin Orientada a Objetos
1. PDO. PHP Data Objects2. MySQLi
Curso de Introduccin 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+
Versin POO de las funciones mysql_xxx();
Curso de Introduccin a PHP 5
4.2. MySQLi
Tema 4. PHP 5 y MySQL
Conctandonos a una base de datos
$mysqli=newmysqli("localhost","user","password","db_name");
Comprobando el estado de la conexin
if($mysqli->connect_errno()){
printf("Error en la conexin:%s\n",$mysqli->connect_err());
exit();
}
Curso de Introduccin a PHP 5
4.2. MySQLi
Tema 4. PHP 5 y MySQL
Cerrando la conexin con una base de datos
$mysqli=newmysqli("localhost","user","password","db_name");
$mysqli->close();
Ejecutando una peticin contra la base de datos
$query = "SELECT * FROM Ciudad";
$result = $mysqli->query($query);
while($row = $result->fetch_array())
{
echo $row['codigo_ciudad'];
}
Curso de Introduccin 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 Introduccin 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()
iInteger
dDecimal
sString
bBlob
Curso de Introduccin 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 automticamente 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 Introduccin a PHP 5
4.2. MySQLi
Tema 4. PHP 5 y MySQL
Ms informacin sobre MySQLi
http://es.php.net/manual/en/book.mysqli.php