Diferencia entre revisiones de «Usuario:Lmorillas/desarrollo web servidor/php/pdo»
De WikiEducator
(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> |
− | + | ||
− | + | ||
− | + | ||
{{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
¿Qué es PDO?
Ventajas
ComponentesTres clases:
|
Drivers instaladosprint_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úsquedahttp://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;
|
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 )); ?> Tip: Para utilizar conexiones persistentes, hay que configurar PDO::ATTR_PERSISTENT en el array de opciones de drivers pasándoselo al constructor PDO.
|