PDO_CUBRID est un pilote qui implémente l' interface PHP Data Objects (PDO) pour permettre l'accès depuis PHP aux bases de données CUBRID.
Note:
La version actuelle de PDO_CUBRID ne prend pas en charge la connexion persistante pour le moment.
Pour construire l'extension PDO_CUBRID, CUBRID DBMS doit être installé sur le même système que PHP. PDO_CUBRID est une extension » PECL, aussi, vous devez suivre les instructions de Installation d'extensions PECL pour installer l'extension PDO_CUBRID. Lancez la commande configure pour localiser le dossier de base de CUBRID comme ceci :
$ ./configure --with-pdo-cubrid=/path/to/CUBRID[,shared]
Aucune bibliothèque DLL pour cette extension PECL n'est actuellement disponible. Reportez-vous à la section Compilation sous Windows. Des informations sur l'installation manuelle sous Linux et Windows peuvent être trouvées dans le fichier build-guide.html du paquet CUBRID de PECL.
PDO_CUBRID prend en charge les curseurs défilables. Le type de curseur par défaut est forward only, et vous pouvez utiliser le paramètre driver_options dans PDO::prepare() pour changer le type de curseur.
PDO_CUBRID prend en charge le paramétrage du délai d'exécution de l'instruction SQL ; Vous pouvez utiliser PDO::setAttribute() pour définir la valeur du délai d'expiration.
PDO_CUBRID prend en charge à la fois le mode autocommit et la transaction, et le mode autocommit est activé par défaut. Vous pouvez utiliser PDO::setAttribute() pour changer son état.
Si vous utilisez PDO::beginTransaction() pour commencer une transaction, cela désactivera automatiquement le mode autocommit et le restaurera après PDO::commit() ou PDO::rollBack().
Note: Avant de désactiver le mode autocommit, tout travail en attente est automatiquement validé.
PDO_CUBRID prend en charge les instructions SQL multiples.
Les instructions SQL multiples sont séparées par des points-virgules (;
).
PDO_CUBRID implémente PDO::cubrid_schema() pour obtenir des informations sur le schéma.
PDO_CUBRID prend en charge les types de données BLOB/CLOB. Le LOB dans PDO est représenté comme un flux, vous pouvez donc insérer des LOBs en liant un flux, et obtenir des LOBs en lisant un flux retourné par CUBRID PDO. Par exemple :
Exemple #1 Insérer des LOBs dans 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();
?>
Exemple #2 Récupérer des LOBs dans 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]);
?>
La méthode PDOStatement::getColumnMeta() dans CUBRID PDO renverra un tableau associatif contenant les valeurs suivantes :
PDO_CUBRID prend en charge les types de données SET/MULTISET/SEQUENCE. Si vous ne spécifiez pas le type de données, le type de données par défaut est char. Par exemple :
Exemple #3 Insérer un ensemble dans CUBRID PDO avec le type de données par défaut.
<?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);
?>
Exemple #4 Spécifier le type de données lors de l'insertion d'un ensemble dans 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);
?>
Types de données CUBRID Bind pour le cinquième paramètre de PDOStatement::bindParam() :
Les constantes ci-dessous sont
définies par ce pilote et seront seulement disponibles lorsque l'extension
aura été compilée dans PHP ou chargée dynamiquement du moteur d'exécution.
De plus, ces constantes spécifiques au pilote devraient être utilisées seulement
si vous utilisez ce pilote. En utilisant les attributs spécifiques à un pilote
avec un autre pilote pourrait causer un comportement inattendu.
PDO::getAttribute() pourrait être utilisé pour obtenir
l'attribut PDO::ATTR_DRIVER_NAME
pour vérifier le
pilote, si votre code peut fonctionner sur des pilotes multiples.
Les constantes suivantes peuvent être utilisées pour configurer les attributs de la base de données. Elles peuvent être passées à la méthode PDO::getAttribute() ou à la méthode PDO::setAttribute().
Constante | Description |
---|---|
PDO::CUBRID_ATTR_ISOLATION_LEVEL |
Le niveau d'isolation de la transaction pour la connexion à la base de données. |
PDO::CUBRID_ATTR_LOCK_TIMEOUT |
Délai d'expiration de la transaction en secondes. |
PDO::CUBRID_ATTR_MAX_STRING_LENGTH |
Lecture seule. La longueur maximale de la chaîne pour les types de données bit, varbit, char, varchar, nchar, nchar lors de l'utilisation de l'API CUBRID PDO. |
Les constantes suivantes peuvent être utilisées lors de la configuration du niveau d'isolation de la transaction. Elles peuvent être passées à la méthode PDO::getAttribute() ou à la méthode PDO::setAttribute().
Constante | Description |
---|---|
PDO::TRAN_COMMIT_CLASS_UNCOMMIT_INSTANCE |
Le niveau d'isolation le moins élevé (1). Une lecture non fiable, non reproductible ou fantôme peut survenir sur le tuple, mais aussi une lecture non reproductible peut survenir pour la table. |
PDO::TRAN_COMMIT_CLASS_COMMIT_INSTANCE |
Un niveau d'isolation relativement bas (2). Une lecture non fiable ne peut pas survenir, par contre, une lecture non reproductible ou fantôme peut survenir. |
PDO::TRAN_REP_CLASS_UNCOMMIT_INSTANCE |
Le niveau d'isolation par défaut pour CUBRID (3). Une lecture non fiable ou fantôme peut survenir sur le tuple, mais la reproductibilité de la lecture est assurée sur le table. |
PDO::TRAN_REP_CLASS_COMMIT_INSTANCE |
Un niveau d'isolation relativement bas (4). Une lecture non fiable ne peut survenir, mais les lectures non reproductibles ou fantôme le peuvent. |
PDO::TRAN_REP_CLASS_REP_INSTANCE |
Un niveau d'isolation relativement haut (5). Les lectures non fiables ou non reproductibles ne peuvent pas survenir, mais une lecture fantôme est possible. |
PDO::TRAN_SERIALIZABLE |
Le plus haut niveau d'isolation (6). Les problèmes relatifs à la concurrence (i.e. lecture non fiable, lecture non reproductible, lecture fantôme, etc...) ne peuvent survenir. |
Les constantes suivantes peuvent être utilisées pour récupérer les informations sur le schéma. Elles peuvent être passées à la fonction PDO::cubrid_schema().
Constante | Description |
---|---|
PDO::CUBRID_SCH_TABLE |
Récupère le nom et le type de table CUBRID. |
PDO::CUBRID_SCH_VIEW |
Récupère le nom et le type de vue dans CUBRID. |
PDO::CUBRID_SCH_QUERY_SPEC |
Récupère la définition de la requête de la vue. |
PDO::CUBRID_SCH_ATTRIBUTE |
Récupère les attributs de la colonne de la table. |
PDO::CUBRID_SCH_TABLE_ATTRIBUTE |
Récupère les attributs de la table. |
PDO::CUBRID_SCH_METHOD |
Récupère la méthode de l'instance. C'est une méthode appelée par l'instance de la classe. Elle est utilisée plus souvent que la méthode de la classe car la plupart des opérations sont exécutées dans l'instance. |
PDO::CUBRID_SCH_TABLE_METHOD |
Récupère la méthode de la classe. C'est une méthode appelée par un objet de la classe. Elle est habituellement utilisée pour créer une nouvelle instance de la classe ou pour l'initialiser. Elle est également utilisée pour accéder ou mettre à jour les attributs de la classe. |
PDO::CUBRID_SCH_METHOD_FILE |
Récupère les informations sur le fichier où la méthode de la table est définie. |
PDO::CUBRID_SCH_SUPER_TABLE |
Récupère le nom et le type de la table dont les attributs héritent. |
PDO::CUBRID_SCH_SUB_TABLE |
Récupère le nom et le type de la table dont les attributs héritent. |
PDO::CUBRID_SCH_CONSTRAINT |
Récupère les contraintes de la table. |
PDO::CUBRID_SCH_TRIGGER |
Récupère les triggers de la table. |
PDO::CUBRID_SCH_TABLE_PRIVILEGE |
Récupère les informations sur les privilèges de la table. |
PDO::CUBRID_SCH_COL_PRIVILEGE |
Récupère les informations sur les privilèges d'une colonne. |
PDO::CUBRID_SCH_DIRECT_SUPER_TABLE |
Récupère la table directement supérieure à la table. |
PDO::CUBRID_SCH_PRIMARY_KEY |
Récupère la clé primaire de la table. |
PDO::CUBRID_SCH_IMPORTED_KEYS |
Récupère les clés importées d'une table. |
PDO::CUBRID_SCH_EXPORTED_KEYS |
Récupère les clés exportées d'une table. |
PDO::CUBRID_SCH_CROSS_REFERENCE |
Récupère les relations de référence entre 2 tables. |