CUBRID(PDO)
简介
PDO_CUBRID 是一个驱动程序,该驱动程序实现PHP数据对象(PDO)接口以允许从PHP访问CUBRID数据库。
Note:当前版本的PDO_CUBRID现在不支持持久连接。
安装
要构建PDO_CUBRID扩展,必须将CUBRID DBMS与PHP安装在同一系统上。PDO_CUBRID是»PECL扩展,因此请按照PECL扩展库安装中的说明安装PDO_CUBRID扩展。发出configure命令以指向您的CUBRID基本目录的位置,如下所示:
$ ./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.
Features
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: Insert LOBs in 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(); ?> Fetch LOBs in 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]); ?> |
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: Insert set in CUBRID PDO with default data type. <?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); ?> Specify data type when insert set in 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); ?>CUBRID Bind Data Types:(The fifth parameter of PDOStatement::bindParam):
|
预定义常量
下列常量由此驱动定义,且仅在扩展编译入 PHP或在运行时动态载入时可用。另外,使用此驱动时,仅会使用这些驱动特定的常量。使用其他驱动的驱动特定的常量可能会导致不可预见的情况。如果代码可运行于多个驱动,PDO::getAttribute()可被用于获取PDO_ATTR_DRIVER_NAME
属性以检查驱动。
设置数据库属性时,可以使用以下常量。它们可以传递给PDO :: getAttribute()或PDO :: setAttribute()。
不变 | 描述 |
---|---|
PDO :: CUBRID_ATTR_ISOLATION_LEVEL | 数据库连接的事务隔离级别。 |
PDO :: CUBRID_ATTR_LOCK_TIMEOUT | 事务超时(以秒为单位)。 |
PDO :: CUBRID_ATTR_MAX_STRING_LENGTH | 只读。使用CUBRID PDO API时,bit,varbit,char,varchar,nchar,nchar不同数据类型的最大字符串长度。 |
设置事务隔离级别时,可以使用以下常量。它们可以传递给PDO :: getAttribute()或由PDO :: setAttribute()返回。
不变 | 描述 |
---|---|
PDO :: TRAN_COMMIT_CLASS_UNCOMMIT_INSTANCE | 最低隔离级别(1)。元组可能发生脏的,不可重复的或幻像的读取,并且表也可能发生不可重复的读取。 |
PDO :: TRAN_COMMIT_CLASS_COMMIT_INSTANCE | 较低的隔离级别(2)。不会发生脏读,但是可能会发生不可重复或幻像读取。 |
PDO :: TRAN_REP_CLASS_UNCOMMIT_INSTANCE | CUBRID(3)的默认隔离。元组可能会发生脏的,不可重复的或幻像的读取,但是可以确保表的可重复读取。 |
PDO :: TRAN_REP_CLASS_COMMIT_INSTANCE | 较低的隔离级别(4)。不会发生脏读,但可能会导致不可重复或幻像读取。 |
PDO :: TRAN_REP_CLASS_REP_INSTANCE | 较高的隔离级别(5)。不会发生脏的或不可重复的读取,但是可能会产生幻像读取。 |
PDO :: TRAN_SERIALIZABLE | 最高隔离级别(6)。不会发生与并发有关的问题(例如脏读,不可重复读,幻像读等)。 |
获取架构信息时,可以使用以下常量。它们可以传递给PDO :: cubrid_schema()。
不变 | 描述 |
---|---|
PDO :: CUBRID_SCH_TABLE | 在CUBRID中获取表的名称和类型。 |
PDO :: CUBRID_SCH_VIEW | 在CUBRID中获取视图的名称和类型。 |
PDO :: CUBRID_SCH_QUERY_SPEC | 获取视图的查询定义。 |
PDO :: CUBRID_SCH_ATTRIBUTE | 获取表列的属性。 |
PDO :: CUBRID_SCH_TABLE_ATTRIBUTE | 获取表的属性。 |
PDO :: CUBRID_SCH_METHOD | 获取实例方法。实例方法是由类实例调用的方法。它比类方法更常用,因为大多数操作都在实例中执行。 |
PDO :: CUBRID_SCH_TABLE_METHOD | 获取类方法。类方法是由类对象调用的方法。它通常用于创建新的类实例或对其进行初始化。它还用于访问或更新类属性。 |
PDO :: CUBRID_SCH_METHOD_FILE | 获取定义了表方法的文件的信息。 |
PDO :: CUBRID_SCH_SUPER_TABLE | 获取该表继承属性的表的名称和类型。 |
PDO :: CUBRID_SCH_SUB_TABLE | 获取从该表继承属性的表的名称和类型。 |
PDO :: CUBRID_SCH_CONSTRAINT | 获取表约束。 |
PDO :: CUBRID_SCH_TRIGGER | 获取表触发器。 |
PDO :: CUBRID_SCH_TABLE_PRIVILEGE | 获取表的特权信息。 |
PDO :: CUBRID_SCH_COL_PRIVILEGE | 获取列的特权信息。 |
PDO :: CUBRID_SCH_DIRECT_SUPER_TABLE | 获取表的直接超级表。 |
PDO :: CUBRID_SCH_PRIMARY_KEY | 获取表主键。 |
PDO :: CUBRID_SCH_IMPORTED_KEYS | 获取导入的表键。 |
PDO :: CUBRID_SCH_EXPORTED_KEYS | 获取表的导出键。 |
PDO :: CUBRID_SCH_CROSS_REFERENCE | 获取拖车表的引用关系。 |
Table of Contents
- PDO_CUBRID DSN—连接到CUBRID数据库
- PDO::cubrid_schema—获取请求的架构信息