PDO_CUBRID is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to CUBRID databases.
注意:
Current version of PDO_CUBRID doesn't support persistent connection now.
To build the PDO_CUBRID extension, the CUBRID DBMS must be installed on the same system as PHP. PDO_CUBRID is a » PECL extension, so follow the instructions in PECL 扩展安装 to install the PDO_CUBRID extension. Issue the configure command to point to the location of the CUBRID base dir as follows:
$ ./configure --with-pdo-cubrid=/path/to/CUBRID[,shared]
PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。 Detailed information about installation on Linux and Windows manually, please read build-guide.html in PECL package CUBRID for reference.
Feature | Description |
---|---|
Scrollable cursors | PDO_CUBRID supports scrollable cursors. The default cursor type is forward only, and you can use parameter driver_options in PDO::prepare() to change cursor type. |
Timeout | PDO_CUBRID supports sql statement execution timeout setting; You can use PDO::setAttribute() to set timeout value. |
Autocommit_mode and Transaction |
PDO_CUBRID supports both autocommit_mode and transaction, and
autocommit_mode is enabled by default. You can use
PDO::setAttribute() to change its state.
If you use PDO::beginTransaction() to begin a transaction, it will disable autocommit_mode automatically and restore it after PDO::commit() or PDO::rollBack(). Note that before disabling the autocommit_mode, any pending work is automatically committed. |
Multiple SQL Statements | PDO_CUBRID supports Multiple SQL statements. Multiple SQL statements are separated by semicolons (;) |
Schema Information | PDO_CUBRID implements a function PDO::cubrid_schema() to get schema information. |
LOBs | PDO_CUBRID supports BLOB/CLOB data type. The LOB in PDO is
represented as a stream, so you can insert LOBs by binding a stream,
and get LOBs by reading a stream returned by CUBRID PDO. For example:
示例 #1 Insert LOBs in CUBRID PDO <?php
示例 #2 Fetch LOBs in CUBRID PDO <?php |
Column meta |
The PDOStatement::getColumnMeta() in CUBRID PDO
will return an associative array containing the following values:
|
Collection Data Type | PDO_CUBRID supports SET/MULTISET/SEQUENCE data type. If you don't specify data type,
the default data type is char,for example:
示例 #3 Insert set in CUBRID PDO with default data type. <?php
示例 #4 Specify data type when insert set in CUBRID PDO <?php
|
下列常量由此驱动定义,且仅在扩展编译入 PHP
或在运行时动态载入时可用。另外,使用此驱动时,仅会使用这些驱动特定的常量。使用其他驱动的驱动特定的常量可能会导致不可预见的情况。如果代码可运行于多个驱动,PDO::getAttribute()
可被用于获取
PDO_ATTR_DRIVER_NAME
属性以检查驱动。
The following constants can be used when setting the database attribute. They can be passed to PDO::getAttribute() or PDO::setAttribute().
Constant | Description |
---|---|
PDO::CUBRID_ATTR_ISOLATION_LEVEL | Transaction isolation level for the database connection. |
PDO::CUBRID_ATTR_LOCK_TIMEOUT | Transaction timeout in seconds. |
PDO::CUBRID_ATTR_MAX_STRING_LENGTH | Read only. The maximum string length for bit, varbit, char, varchar, nchar, nchar varying data types when using CUBRID PDO API. |
The following constants can be used when setting the transaction isolation level. They can be passed to PDO::getAttribute() or returned by PDO::setAttribute().
Constant | Description |
---|---|
PDO::TRAN_COMMIT_CLASS_UNCOMMIT_INSTANCE | The lowest isolation level (1). A dirty, non-repeatable or phantom read may occur for the tuple and a non-repeatable read may occur for the table as well. |
PDO::TRAN_COMMIT_CLASS_COMMIT_INSTANCE | A relatively low isolation level (2). A dirty read does not occur, but non-repeatable or phantom read may occur. |
PDO::TRAN_REP_CLASS_UNCOMMIT_INSTANCE | The default isolation of CUBRID (3). A dirty, non-repeatable or phantom read may occur for the tuple, but repeatable read is ensured for the table. |
PDO::TRAN_REP_CLASS_COMMIT_INSTANCE | A relatively low isolation level (4). A dirty read does not occur, but non-repeatable or phantom read may. |
PDO::TRAN_REP_CLASS_REP_INSTANCE | A relatively high isolation level (5). A dirty or non-repeatable read does not occur, but a phantom read may. |
PDO::TRAN_SERIALIZABLE | The highest isolation level (6). Problems concerning concurrency (e.g. dirty read, non-repeatable read, phantom read, etc.) do not occur. |
The following constants can be used when getting schema information. They can be passed to PDO::cubrid_schema().
Constant | Description |
---|---|
PDO::CUBRID_SCH_TABLE | Get name and type of table in CUBRID. |
PDO::CUBRID_SCH_VIEW | Get name and type of view in CUBRID. |
PDO::CUBRID_SCH_QUERY_SPEC | Get the query definition of view. |
PDO::CUBRID_SCH_ATTRIBUTE | Get the attributes of table column. |
PDO::CUBRID_SCH_TABLE_ATTRIBUTE | Get the attributes of table. |
PDO::CUBRID_SCH_METHOD | Get the instance method. The instance method is a method called by a class instance. It is used more often than the class method because most operations are executed in the instance. |
PDO::CUBRID_SCH_TABLE_METHOD | Get the class method. The class method is a method called by a class object. It is usually used to create a new class instance or to initialize it. It is also used to access or update class attributes. |
PDO::CUBRID_SCH_METHOD_FILE | Get the information of the file where the method of the table is defined. |
PDO::CUBRID_SCH_SUPER_TABLE | Get the name and type of table which table inherites attributes from. |
PDO::CUBRID_SCH_SUB_TABLE | Get the name and type of table which inherites attributes from this table. |
PDO::CUBRID_SCH_CONSTRAINT | Get the table constraints. |
PDO::CUBRID_SCH_TRIGGER | Get the table triggers. |
PDO::CUBRID_SCH_TABLE_PRIVILEGE | Get the privilege information of table. |
PDO::CUBRID_SCH_COL_PRIVILEGE | Get the privilege information of column. |
PDO::CUBRID_SCH_DIRECT_SUPER_TABLE | Get the direct super table of table. |
PDO::CUBRID_SCH_PRIMARY_KEY | Get the table primary key. |
PDO::CUBRID_SCH_IMPORTED_KEYS | Get imported keys of table. |
PDO::CUBRID_SCH_EXPORTED_KEYS | Get exported keys of table. |
PDO::CUBRID_SCH_CROSS_REFERENCE | Get reference relationship of tow tables. |