PDO_CUBRID es un controlador que implementa la interfaz PHP Data Objects (PDO) para permitir el acceso desde PHP a las bases de datos CUBRID.
Nota:
La versión actual de PDO_CUBRID no soporta la conexión persistente en este momento.
Para construir la extensión PDO_CUBRID, el sistema de gestión de bases de datos CUBRID debe estar instalado en el mismo sistema que PHP. PDO_CUBRID es una extensión » PECL, por lo tanto, debe seguirse las instrucciones de Instalación de extensiones PECL para instalar la extensión PDO_CUBRID. Ejecute el comando configure para localizar el directorio base de CUBRID de la siguiente manera:
$ ./configure --with-pdo-cubrid=/path/to/CUBRID[,shared]
Actualmente, no hay ninguna DLL disponible para esta extensión PECL. Véase también la sección Compilación en Windows . Información sobre la instalación manual en Linux y Windows puede encontrarse en el archivo build-guide.html del paquete CUBRID de PECL.
PDO_CUBRID soporta los cursores desplazables. El tipo de cursor por omisión es forward only, y se puede utilizar el argumento driver_options en PDO::prepare() para cambiar el tipo de cursor.
PDO_CUBRID soporta la configuración del tiempo límite de ejecución de la instrucción SQL; se puede utilizar PDO::setAttribute() para definir el valor del tiempo límite.
PDO_CUBRID soporta tanto el modo autocommit como la transacción, y el modo autocommit está activado por omisión. Se puede utilizar PDO::setAttribute() para cambiar su estado.
Si se utiliza PDO::beginTransaction() para comenzar una transacción, esto desactivará automáticamente el modo autocommit y lo restaurará después de PDO::commit() o PDO::rollBack().
Nota: Antes de desactivar el modo autocommit, todo trabajo pendiente es validado automáticamente.
PDO_CUBRID soporta las instrucciones SQL múltiples.
Las instrucciones SQL múltiples están separadas por puntos y coma (;
).
PDO_CUBRID implementa PDO::cubrid_schema() para obtener información sobre el esquema.
PDO_CUBRID soporta los tipos de datos BLOB/CLOB. El LOB en PDO es representado como un flujo, por lo que se pueden insertar LOBs vinculando un flujo, y obtener LOBs leyendo un flujo devuelto por CUBRID PDO. Por ejemplo:
Ejemplo #1 Insertar LOBs en CUBRID PDO
<?php
$fp = fopen('lob_test.png', 'rb');
$sql_stmt = "INSERT INTO lob_test(name, content) VALUES('lob_test.png', ?)";
$stmt = $dbh->prepare($sql_stmt);
$ret = $stmt->bindParam(1, $fp, PDO::PARAM_LOB);
$ret = $stmt->execute();
?>
Ejemplo #2 Recuperar LOBs en CUBRID PDO
<?php
$sql_stmt = "SELECT content FROM lob_test WHERE name='lob_test.png'";
$stmt = $dbh->prepare($sql_stmt);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_NUM);
header("Content-Type: image/png");
fpassthru($result[0]);
?>
El método PDOStatement::getColumnMeta() en CUBRID PDO devolverá un array asociativo que contiene los siguientes valores:
PDO_CUBRID soporta los tipos de datos SET/MULTISET/SEQUENCE. Si no se especifica el tipo de datos, el tipo de datos por omisión es char. Por ejemplo:
Ejemplo #3 Insertar un conjunto en CUBRID PDO con el tipo de datos por omisión.
<?php
$conn_str ="cubrid:dbname=demodb;host=localhost;port=33000";
$cubrid_pdo = new PDO($conn_str, 'dba', '');
$cubrid_pdo->exec("DROP TABLE if exists test_tbl");
$cubrid_pdo->exec("CREATE TABLE test_tbl (col_1 SET(VARCHAR))");
$sql_stmt_insert = "INSERT INTO test_tbl VALUES (?);";
$stmt = $cubrid_pdo->prepare($sql_stmt_insert);
$data = array("abc","def","ghi");
$ret = $stmt->bindParam(1, $data, PDO::PARAM_NULL);
$ret = $stmt->execute();
var_Dump($ret);
?>
Ejemplo #4 Especificar el tipo de datos al insertar un conjunto en CUBRID PDO
<?php
$conn_str ="cubrid:dbname=demodb;host=localhost;port=33000";
$cubrid_pdo = new PDO($conn_str, 'dba', '');
$cubrid_pdo->exec("DROP TABLE if exists test_tbl");
$cubrid_pdo->exec("CREATE TABLE test_tbl (col_1 SET(int))");
$sql_stmt_insert = "INSERT INTO test_tbl VALUES (?);";
$stmt = $cubrid_pdo->prepare($sql_stmt_insert);
$data = array(1,2,3,4);
$ret = $stmt->bindParam(1, $data, 0,0,"int");
$ret = $stmt->execute();
var_Dump($ret);
?>
Tipos de datos CUBRID Bind para el quinto argumento de PDOStatement::bindParam():
Estas constantes están definidas por
este controlador, y estarán disponibles sólo cuando la extensión haya sido
compilada con PHP, o bien sea cargada dinámicamente en ejecución. Además, estas
constantes específicas del controlador deberían ser utilizadas sólo si está usando este controlador.
Usar atributos específicos del controlador con otro controlador podría resultar en un
comportamiento inesperado. PDO::getAttribute() puede ser empleado para
obtener el atributo PDO::ATTR_DRIVER_NAME
para verificar el
controlador, si el código puede ejecutarse con múltiples controladores.
Las constantes siguientes pueden ser utilizadas para configurar los atributos de la base de datos. Pueden ser pasadas al método PDO::getAttribute() o al método PDO::setAttribute().
Constante | Descripción |
---|---|
PDO::CUBRID_ATTR_ISOLATION_LEVEL |
El nivel de aislamiento de la transacción para la conexión a la base de datos. |
PDO::CUBRID_ATTR_LOCK_TIMEOUT |
Tiempo de expiración de la transacción en segundos. |
PDO::CUBRID_ATTR_MAX_STRING_LENGTH |
Solo lectura. La longitud máxima del string para los tipos de datos bit, varbit, char, varchar, nchar, nvarchar al utilizar la API CUBRID PDO. |
Las constantes siguientes pueden ser utilizadas al configurar el nivel de aislamiento de la transacción. Pueden ser pasadas al método PDO::getAttribute() o al método PDO::setAttribute().
Constante | Descripción |
---|---|
PDO::TRAN_COMMIT_CLASS_UNCOMMIT_INSTANCE |
El nivel de aislamiento más bajo (1). Una lectura no fiable, no reproducible o fantasma puede ocurrir sobre el tuple, pero también una lectura no reproducible puede ocurrir para la tabla. |
PDO::TRAN_COMMIT_CLASS_COMMIT_INSTANCE |
Un nivel de aislamiento relativamente bajo (2). Una lectura no fiable no puede ocurrir, pero una lectura no reproducible o fantasma puede ocurrir. |
PDO::TRAN_REP_CLASS_UNCOMMIT_INSTANCE |
El nivel de aislamiento por defecto para CUBRID (3). Una lectura no fiable o fantasma puede ocurrir sobre el tuple, pero la reproducibilidad de la lectura está asegurada sobre la tabla. |
PDO::TRAN_REP_CLASS_COMMIT_INSTANCE |
Un nivel de aislamiento relativamente bajo (4). Una lectura no fiable no puede ocurrir, pero las lecturas no reproducibles o fantasma pueden ocurrir. |
PDO::TRAN_REP_CLASS_REP_INSTANCE |
Un nivel de aislamiento relativamente alto (5). Las lecturas no fiables o no reproducibles no pueden ocurrir, pero una lectura fantasma es posible. |
PDO::TRAN_SERIALIZABLE |
El nivel de aislamiento más alto (6). Los problemas relacionados con la concurrencia (i.e. lectura no fiable, lectura no reproducible, lectura fantasma, etc...) no pueden ocurrir. |
Las constantes siguientes pueden ser utilizadas para recuperar la información sobre el esquema. Pueden ser pasadas a la función PDO::cubrid_schema().
Constante | Descripción |
---|---|
PDO::CUBRID_SCH_TABLE |
Recupera el nombre y el tipo de tabla CUBRID. |
PDO::CUBRID_SCH_VIEW |
Recupera el nombre y el tipo de vista en CUBRID. |
PDO::CUBRID_SCH_QUERY_SPEC |
Recupera la definición de la consulta de la vista. |
PDO::CUBRID_SCH_ATTRIBUTE |
Recupera los atributos de la columna de la tabla. |
PDO::CUBRID_SCH_TABLE_ATTRIBUTE |
Recupera los atributos de la tabla. |
PDO::CUBRID_SCH_METHOD |
Recupera el método de la instancia. Es un método llamado por la instancia de la clase. Se utiliza más a menudo que el método de la clase ya que la mayoría de las operaciones se ejecutan en la instancia. |
PDO::CUBRID_SCH_TABLE_METHOD |
Recupera el método de la clase. Es un método llamado por un objeto de la clase. Se utiliza habitualmente para crear una nueva instancia de la clase o para inicializarla. También se utiliza para acceder o actualizar los atributos de la clase. |
PDO::CUBRID_SCH_METHOD_FILE |
Recupera la información sobre el archivo donde el método de la tabla está definido. |
PDO::CUBRID_SCH_SUPER_TABLE |
Recupera el nombre y el tipo de la tabla de la que los atributos heredan. |
PDO::CUBRID_SCH_SUB_TABLE |
Recupera el nombre y el tipo de la tabla de la que los atributos heredan. |
PDO::CUBRID_SCH_CONSTRAINT |
Recupera las restricciones de la tabla. |
PDO::CUBRID_SCH_TRIGGER |
Recupera los triggers de la tabla. |
PDO::CUBRID_SCH_TABLE_PRIVILEGE |
Recupera la información sobre los privilegios de la tabla. |
PDO::CUBRID_SCH_COL_PRIVILEGE |
Recupera la información sobre los privilegios de una columna. |
PDO::CUBRID_SCH_DIRECT_SUPER_TABLE |
Recupera la tabla directamente superior a la tabla. |
PDO::CUBRID_SCH_PRIMARY_KEY |
Recupera la clave primaria de la tabla. |
PDO::CUBRID_SCH_IMPORTED_KEYS |
Recupera las claves importadas de una tabla. |
PDO::CUBRID_SCH_EXPORTED_KEYS |
Recupera las claves exportadas de una tabla. |
PDO::CUBRID_SCH_CROSS_REFERENCE |
Recupera las relaciones de referencia entre 2 tablas. |