Diferencia entre revisiones de «Usuario:Lmorillas/desarrollo web servidor/php/pdo»

De WikiEducator
Saltar a: navegación, buscar
 
(7 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
{{MiTitulo|PDO: PHP Data Objects}}
+
<noinclude>{{MiTitulo|PDO: PHP Data Objects}}</noinclude>
 
+
 
+
__TOC__
+
  
 
{{Conocimiento previo|Title=PDO|
 
{{Conocimiento previo|Title=PDO|
Línea 13: Línea 10:
 
* Velocidad
 
* Velocidad
 
* Facilita la instalación  
 
* Facilita la instalación  
 +
==Componentes==
 +
Tres clases:
 +
* PDO. Responable de la conexión con la base de datos. Crea instancias de PDOStatment
 +
* PDOStatment. Gestionan las consultas SQL y la obtención de resultados.
 +
* PDOException. Gestión de errores.
  
 
}}
 
}}
Línea 18: Línea 20:
 
{{Lectura|
 
{{Lectura|
 
* http://php.net/manual/en/book.pdo.php
 
* http://php.net/manual/en/book.pdo.php
 +
** Gestión de conexiones: http://www.php.net/manual/es/pdo.connections.php
 +
** Sentencias preparadas: http://www.php.net/manual/es/pdo.prepared-statements.php
 +
** Manejo de errores: http://www.php.net/manual/es/pdo.error-handling.php
 
* http://www.mclibre.org/consultar/php/lecciones/php_db_pdo.html
 
* http://www.mclibre.org/consultar/php/lecciones/php_db_pdo.html
 +
* http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers
 +
* http://net.tutsplus.com/tutorials/php/php-database-access-are-you-doing-it-correctly/
 +
* SQLite: http://net-wrench.com/cheat-sheets/SQLITE_php_pdo_reference.pdf
 
}}
 
}}
  
 
{{Conocimiento previo|Title=Ejemplos|
 
{{Conocimiento previo|Title=Ejemplos|
 +
== Drivers instalados ==
 +
<source lang="php">
 +
print_r(PDO::getAvailableDrivers());
 +
</source>
 
== Ej. Conexión ==
 
== Ej. Conexión ==
 
<source lang="php">
 
<source lang="php">
Línea 46: Línea 58:
 
}
 
}
 
</source>
 
</source>
 +
== Búsqueda ==
 +
http://www.php.net/manual/es/pdo.query.php
 +
<source lang="php">
 +
<?php
 +
function getFruit($conn) {
 +
    $sql = 'SELECT name, color, calories FROM fruit ORDER BY name';
 +
    foreach ($conn->query($sql) as $row) {
 +
        print $row['name'] . "\t";
 +
        print $row['color'] . "\t";
 +
        print $row['calories'] . "\n";
 +
    }
 +
}
 +
?>
 +
 +
</source>
 +
== Cerrar conexión ==
 +
<source lang="php">
 +
$conn = null;
 +
</source>
 +
}}
 +
 +
 +
{{Conocimiento previo|Title=Conexiones Persistentes|
 +
 +
Las conexiones persistentes no son cerradas al final del script. Son reutilizadas cuando otro script solicita una conexión usando las mismas credenciales. Una caché de la conexión optimiza el rendimiento.
 +
<source lang="php">
 +
<?php
 +
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
 +
    PDO::ATTR_PERSISTENT => true
 +
));
 +
?>
 +
</source>
 +
 +
{{Tip|Para utilizar conexiones persistentes, hay que configurar PDO::ATTR_PERSISTENT en el array de opciones de drivers pasándoselo al constructor PDO. }}
 
}}
 
}}

Última revisión de 00:43 7 feb 2014



Icon preknowledge.gif

PDO

¿Qué es PDO?

  • Una extensión de PHP escrita en C/C++
  • una capa para conectar con bases de datos

Ventajas

  • Soporta muchas bases de datos
  • No hay que reescribir el código si se cambia de base de datos
  • Velocidad
  • Facilita la instalación

Componentes

Tres clases:

  • PDO. Responable de la conexión con la base de datos. Crea instancias de PDOStatment
  • PDOStatment. Gestionan las consultas SQL y la obtención de resultados.
  • PDOException. Gestión de errores.








Icon preknowledge.gif

Ejemplos

Drivers instalados

print_r(PDO::getAvailableDrivers());

Ej. Conexión

# MySQL
$conn = new PDO("mysql:host = $host; dbname = $baseDatos", $usuario, $contraseña);
 
# PostgreSQL
$conn = new PDO("pgsql:host = $host port = $puerto dbname = $baseDatos", $usuario, $contraseña);

Ej. Completo

$id = 5;
try {
    $conn = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare('SELECT * FROM myTable WHERE id = :id');
    $stmt->execute(array('id' => $id));
    while($row = $stmt->fetch()) {
        print_r($row);
    }
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

Búsqueda

http://www.php.net/manual/es/pdo.query.php

<?php
function getFruit($conn) {
    $sql = 'SELECT name, color, calories FROM fruit ORDER BY name';
    foreach ($conn->query($sql) as $row) {
        print $row['name'] . "\t";
        print $row['color'] . "\t";
        print $row['calories'] . "\n";
    }
}
?>

Cerrar conexión

$conn = null;





Icon preknowledge.gif

Conexiones Persistentes

Las conexiones persistentes no son cerradas al final del script. Son reutilizadas cuando otro script solicita una conexión usando las mismas credenciales. Una caché de la conexión optimiza el rendimiento.

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
    PDO::ATTR_PERSISTENT => true
));
?>
Icon present.gif
Tip: Para utilizar conexiones persistentes, hay que configurar PDO::ATTR_PERSISTENT en el array de opciones de drivers pasándoselo al constructor PDO.