• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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]
    
    The configure command defaults to the value of theCUBRIDenvironment variable.


    PECL扩展的DLL当前不可用。参见在 Windows 上构建章节。 Detailed information about installation on Linux and Windows manually, please read build-guide.html in PECL package CUBRID for reference.

    Features

    PDO_CUBRID Features
    FeatureDescription
    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.
    TimeoutPDO_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 StatementsPDO_CUBRID supports Multiple SQL statements. Multiple SQL statements are separated by semicolons(;)
    Schema InformationPDO_CUBRID implements a function PDO::cubrid_schema()to get schema information.
    LOBsPDO_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:
    • type
    • name
    • table
    • def
    • precision
    • scale
    • not_null
    • auto_increment
    • unique_key
    • multiple_key
    • primary_key
    • foreign_key
    • reverse_index
    • reverse_unique
    Collection Data TypePDO_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):
    • CHAR
    • STRING
    • NCHAR
    • VARNCHAR
    • BIT
    • VARBIT
    • NUMERIC
    • NUMBER
    • INT
    • SHORT
    • BIGINT
    • MONETARY
    • FLOAT
    • DOUBLE
    • DATE
    • TIME
    • DATETIME
    • TIMESTAMP

    预定义常量

    下列常量由此驱动定义,且仅在扩展编译入 PHP或在运行时动态载入时可用。另外,使用此驱动时,仅会使用这些驱动特定的常量。使用其他驱动的驱动特定的常量可能会导致不可预见的情况。如果代码可运行于多个驱动,PDO::getAttribute()可被用于获取PDO_ATTR_DRIVER_NAME属性以检查驱动。

    设置数据库属性时,可以使用以下常量。它们可以传递给PDO :: getAttribute()或PDO :: setAttribute()。

    PDO :: CUBRID属性标志
    不变描述
    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 :: CUBRID隔离级别标志
    不变描述
    PDO :: TRAN_COMMIT_CLASS_UNCOMMIT_INSTANCE最低隔离级别(1)。元组可能发生脏的,不可重复的或幻像的读取,并且表也可能发生不可重复的读取。
    PDO :: TRAN_COMMIT_CLASS_COMMIT_INSTANCE较低的隔离级别(2)。不会发生脏读,但是可能会发生不可重复或幻像读取。
    PDO :: TRAN_REP_CLASS_UNCOMMIT_INSTANCECUBRID(3)的默认隔离。元组可能会发生脏的,不可重复的或幻像的读取,但是可以确保表的可重复读取。
    PDO :: TRAN_REP_CLASS_COMMIT_INSTANCE较低的隔离级别(4)。不会发生脏读,但可能会导致不可重复或幻像读取。
    PDO :: TRAN_REP_CLASS_REP_INSTANCE较高的隔离级别(5)。不会发生脏的或不可重复的读取,但是可能会产生幻像读取。
    PDO :: TRAN_SERIALIZABLE最高隔离级别(6)。不会发生与并发有关的问题(例如脏读,不可重复读,幻像读等)。

    获取架构信息时,可以使用以下常量。它们可以传递给PDO :: cubrid_schema()。

    PDO :: CUBRID模式标志
    不变描述
    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—获取请求的架构信息