PDO

7

Click here to load reader

Transcript of PDO

Page 1: PDO

PDO (PHP DATA OBJECT)

Es una extensión que provee una capa de abstracción de acceso a datos para PHP 5, con lo cual se consigue hacer uso de las mismas funciones para hacer consultas y obtener datos de distintos manejadores de bases de datos.

Controladores

Los siguientes controladores actualmente implementan la interfaz PDO:

PDO_DBLIB: FreeTDS / Microsoft SQL Server / Sybase PDO_FIREBIRD: Firebird / Interbase 6 PDO_IBM: IBM DB2 PDO_INFORMIX: IBM Informix Dynamic Server PDO_MYSQL: MySQL 3.x/4.x/5.x PDO_OCI: Oracle Call Interface PDO_ODBC: ODBC v3 (IBM DB2, unixODBC y win32 ODBC) PDO_PGSQL: PostgreSQL PDO_SQLITE: SQLite 3 y SQLite 2

De las mencionadas, PDO_DBLIB, PDO_FIREBIRD y PDO_OCI son consideradas experimentales y su comportamiento puede variar en nuevas versiones.

Como verificar los controladores habilitados en el servidor.

Tipo Código Descripción

PHPforeach(PDO::getAvailableDrivers() as $driver){

echo $driver."<br>";}

Este código permite es enviar a imprimir en el HTML los nombre de los controladores habilitados en nuestro servidor.

php.ini

extension=php_pdo.dll;extension=php_pdo_dblib.dll;extension=php_pdo_firebird_firebird.dll;extension=php_pdo_firebird_interbase.dll;extension=php_pdo_mssql.dll;extension=php_pdo_mysql_mysqlnd.dllextension=php_pdo_mysql_libmysql.dllextension=php_pdo_odbc.dllextension=php_pdo_pgsql.dllextension=php_pdo_sqlite.dll

Si se desea habilitar un controlador PDO se debe de ir al archivo php.ini, en el cual en su parte de extensiones como lo vemos en el lado derecho, muestra los diferentes controladores de PDO activos, si se desea activar alguno solo des comente quitando el “;” y reinicie el servidor apache.

BD Instanciación de PDOPostgresql $instancia= new PDO("pgsql:dbname=[BD];host=[Host]", "[Usuario]", "[Contraseña]");

Mysql $instancia= new PDO("mysql:dbname=[BD];host=[Host]", "[Usuario]", "[Contraseña]");

ODBC $instancia= new PDO("odbc:[Nombre del Origen de Datos]", "[Usuario]", "[Contraseña]");

Page 2: PDO

Acceso a bases de datos en PHP5 con PDO

La extensión php_pdo para el trabajo con bases de datos está compuesta por tres clases:

PDO: Representa una conexión entre PHP y un servidor de bases de datos.

PDOStatement: Representa una instrucción preparada y después que la instrucción es

ejecutada, una resultset.

PDOException: Representa un error lanzado por PDO.

Clase: PDOComandos Parámetros Descripción

PDO::beginTransaction Inicializa una transacción.

PDO::commit Commits una transacción.

PDO::__constructstring $dsn [, string $username [, string $password [, array $driver_options ]]]

Crea una instancia PDO que representa una conexión a una base de datos.

PDO::errorCodeRecupera el SQLSTATE asociado con la última operación en la base de datos.

PDO::errorInfoRecupera información extendida del error asociado con la última operación en la base de datos.

PDO::exec string $sql Ejecuta una instrucción SQL y retorna el número de filas afectadas.

PDO::getAttribute int $attribute Recupera un atributo de conexión a base de dato.

PDO::getAvailableDriversRetorna un array (arreglo) de los drivers disponibles en la extensión PDO.

PDO::lastInsertId [ string $name = NULL ]Retorna el ID (identificador) de la última fila insertada o secuencia de valores.

PDO::preparestring $statement [, array $driver_options = array() ]

Prepara una instrucción para ejecución y retorna un objeto de tipo PDOStatement.

PDO::query

string $statement[[,int $PDO::FETCH_COLUMN , int $colno]||[ , int $PDO::FETCH_CLASS , string $classname , array $ctorargs]||[ , int $PDO::FETCH_INTO , object $object]]

Ejecuta una instrucción SQL, retornando un resulset como un objeto de tipo PDOStatement.

PDO::quotestring $string [, int $parameter_type = PDO::PARAM_STR ]

Quotes (Pone entre comillas simples un string) para uso en una query (consulta).

PDO::rollBack Rolls back una transacción.

PDO::setAttribute int $attribute , mixed $value Modifica un atributo.

Page 3: PDO

Clase: PDOStatementComandos Parámetros Descripción

PDOStatement->bindColumnmixed $column , mixed &$param [, int $type [, int $maxlen [, mixed $driverdata ]]]

Sustituye el valor de una columna de la base de datos a una variable PHP.

<?phpfunction readData($dbh) {  $sql = 'SELECT name, colour, calories FROM fruit';  try {    $stmt = $dbh->prepare($sql);    $stmt->execute();

    /* Bind by column number */    $stmt->bindColumn(1, $name);    $stmt->bindColumn(2, $colour);        /* Bind by column name */    $stmt->bindColumn('calories', $cals);

    while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {      $data = $name . "\t" . $colour . "\t" . $cals . "\n";      print $data;    }  }  catch (PDOException $e) {    print $e->getMessage();  }}readData($dbh);?>

PDOStatement->bindParammixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]]

Sustituye el valor de un parámetro (argumento), al nombre de variable especificada.

<?php/* Execute a prepared statement by binding PHP variables */$calories = 150;$colour = 'red';$sth = $dbh->prepare('SELECT name, colour, calories    FROM fruit    WHERE calories < :calories AND colour = :colour');$sth->bindParam(':calories', $calories, PDO::PARAM_INT);$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);$sth->execute();?>

<?php/* Execute a prepared statement by binding PHP variables */$calories = 150;$colour = 'red';$sth = $dbh->prepare('SELECT name, colour, calories    FROM fruit    WHERE calories < ? AND colour = ?');$sth->bindParam(1, $calories, PDO::PARAM_INT);$sth->bindParam(2, $colour, PDO::PARAM_STR, 12);$sth->execute();?>

PDOStatement->bindValuemixed $parameter , mixed $value [, int $data_type = PDO::PARAM_STR ]

Sustituye un valor como parámetro.

<?php/* Execute a prepared statement by binding PHP variables */$calories = 150;$colour = 'red';$sth = $dbh->prepare('SELECT name, colour, calories    FROM fruit    WHERE calories < :calories AND colour = :colour');$sth->bindValue(':calories', $calories, PDO::PARAM_INT);$sth->bindValue(':colour', $colour, PDO::PARAM_STR);$sth->execute();?>

Page 4: PDO

<?php/* Execute a prepared statement by binding PHP variables */$calories = 150;$colour = 'red';$sth = $dbh->prepare('SELECT name, colour, calories    FROM fruit    WHERE calories < ? AND colour = ?');$sth->bindValue(1, $calories, PDO::PARAM_INT);$sth->bindValue(2, $colour, PDO::PARAM_STR);$sth->execute();?>

PDOStatement->closeCursorCierra el cursor, habilitando la instrucción a ser ejecutada otra vez.

PDOStatement->columnCount Retorna el número de columnas en el resultset.

PDOStatement->debugDumpParams Dump un comando SQL preparado.

PDOStatement->errorCodeRecupera el SQLSTATE asociado con la última operación realizada en la base de datos.

PDOStatement->errorInfoRecupera información de error extendida asociada con la última operación realizada en la base de datos.

PDOStatement->execute [ array $input_parameters = array() ] Ejecuta una instrucción preparada.

/***********************************************************************************<?php/* Execute a prepared statement by binding PHP variables */$calories = 150;$colour = 'red';$sth = $dbh->prepare('SELECT name, colour, calories    FROM fruit    WHERE calories < :calories AND colour = :colour');$sth->bindParam(':calories', $calories, PDO::PARAM_INT);$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);$sth->execute();?>/***********************************************************************************<?php/* Execute a prepared statement by passing an array of insert values */$calories = 150;$colour = 'red';$sth = $dbh->prepare('SELECT name, colour, calories    FROM fruit    WHERE calories < :calories AND colour = :colour');$sth->execute(array(':calories' => $calories, ':colour' => $colour));?>/***********************************************************************************<?php/* Execute a prepared statement by passing an array of insert values */$calories = 150;$colour = 'red';$sth = $dbh->prepare('SELECT name, colour, calories    FROM fruit    WHERE calories < ? AND colour = ?');$sth->execute(array($calories, $colour));?>

Page 5: PDO

PDOStatement->fetch

[ int $fetch_style = PDO::FETCH_BOTH [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]]

Recupera la siguiente fila de una resultset.

<?php$sth = $dbh->prepare("SELECT name, colour FROM fruit");$sth->execute();

/* Exercise PDOStatement::fetch styles */print("PDO::FETCH_ASSOC: ");print("Return next row as an array indexed by column name\n");$result = $sth->fetch(PDO::FETCH_ASSOC);print_r($result);print("\n");

print("PDO::FETCH_BOTH: ");print("Return next row as an array indexed by both column name and number\n");$result = $sth->fetch(PDO::FETCH_BOTH);print_r($result);print("\n");

print("PDO::FETCH_LAZY: ");print("Return next row as an anonymous object with column names as properties\n");$result = $sth->fetch(PDO::FETCH_LAZY);print_r($result);print("\n");

print("PDO::FETCH_OBJ: ");print("Return next row as an anonymous object with column names as properties\n");$result = $sth->fetch(PDO::FETCH_OBJ);print $result->NAME;print("\n");?>/********************************************* Resultado de Salida *************************************************************PDO::FETCH_ASSOC: Return next row as an array indexed by column nameArray( [NAME] => apple [COLOUR] => red)

PDO::FETCH_BOTH: Return next row as an array indexed by both column name and numberArray( [NAME] => banana [0] => banana [COLOUR] => yellow [1] => yellow)

PDO::FETCH_LAZY: Return next row as an anonymous object with column names as propertiesPDORow Object( [NAME] => orange [COLOUR] => orange)

PDO::FETCH_OBJ: Return next row as an anonymous object with column names as propertieskiwi

PDOStatement->fetchAll[ int $fetch_style = PDO::FETCH_BOTH [, mixed $fetch_argument [, array $ctor_args = array() ]]]

Retorna un array conteniendo todas las filas del resultset.

PDOStatement->fetchColumn [ int $column_number = 0 ]Retorna una única columna de la siguiente fila de un resultset.

PDOStatement->fetchObject[ string $class_name = "stdClass" [, array $ctor_args ]]

Recupera la siguiente fila y la retorna como un objeto.

PDOStatement->getAttribute int $attribute Recupera una atributo.

PDOStatement->getColumnMeta int $column function experimental Retorna metadatos de una columna en un resultset.

PDOStatement->nextRowset Avanza a la siguiente Rowset en un multi-rowset.

Page 6: PDO

PDOStatement->rowCountRetorna el número de filas afectadas por la última instrucción SQL.

<?php/* Delete all rows from the FRUIT table */$del = $dbh->prepare('DELETE FROM fruit');$del->execute();

/* Return number of rows that were deleted */print("Return number of rows that were deleted:\n");$count = $del->rowCount();print("Deleted $count rows.\n");?>

PDOStatement->setAttribute int $attribute , mixed $value Modifica un atributo.

PDOStatement->setFetchMode

int $mode || int $PDO::FETCH_COLUMN , int $colno || int $PDO::FETCH_CLASS , string $classname , array $ctorargs || int $PDO::FETCH_INTO , object $object

Modifica el valor por defecto para recuperar datos de la base de datos para la instrucción actual.