CUBRID 函数 (PDO_CUBRID)

简介

PDO_CUBRID 是一个驱动程序,它实现了 PHP 数据对象 (PDO) 接口,以允许从 PHP 访问 CUBRID 数据库。

注意:

当前版本的 PDO_CUBRID 现在不支持持久连接。

安装

要构建 PDO_CUBRID 扩展,CUBRID DBMS 必须安装在与 PHP 相同的系统上。PDO_CUBRID 是一个 » PECL 扩展,因此请按照 安装 PECL 扩展 中的说明安装 PDO_CUBRID 扩展。发出 configure 命令以指向 CUBRID 基本目录的位置,如下所示

   $ ./configure --with-pdo-cubrid=/path/to/CUBRID[,shared]
configure 命令默认使用 CUBRID 环境变量的值。

DLLPECL 扩展目前不可用。另请参见 在 Windows 上构建 部分。有关在 Linux 和 Windows 上手动安装的详细信息,请参阅 PECL 包 CUBRID 中的 build-guide.html 以供参考。

PDO_CUBRID 特性

可滚动游标

PDO_CUBRID 支持可滚动游标。默认游标类型是仅向前,您可以使用 PDO::prepare() 中的参数 driver_options 更改游标类型。

超时

PDO_CUBRID 支持 SQL 语句执行超时设置;您可以使用 PDO::setAttribute() 设置超时值。

Autocommit_mode 和事务

PDO_CUBRID 支持 autocommit_mode 和事务,默认情况下启用 autocommit_mode。您可以使用 PDO::setAttribute() 更改其状态。

如果您使用 PDO::beginTransaction() 开始事务,它将自动禁用 autocommit_mode,并在 PDO::commit()PDO::rollBack() 之后恢复它。

注意: 在禁用 autocommit_mode 之前,任何挂起的操作都会自动提交。

多个 SQL 语句

PDO_CUBRID 支持多个 SQL 语句。多个 SQL 语句用分号 (;) 分隔。

模式信息

PDO_CUBRID 实现了 PDO::cubrid_schema() 以获取模式信息。

LOB

PDO_CUBRID 支持 BLOB/CLOB 数据类型。PDO 中的 LOB 表示为流,因此您可以通过绑定流插入 LOB,并通过读取 CUBRID PDO 返回的流来获取 LOB。例如

示例 #1 在 CUBRID PDO 中插入 LOB

<?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();
?>

示例 #2 在 CUBRID PDO 中获取 LOB

<?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]);
?>

列元数据

CUBRID PDO 中的 PDOStatement::getColumnMeta() 将返回一个包含以下值的关联数组

  • type
  • name
  • table
  • def
  • precision
  • scale
  • not_null
  • auto_increment
  • unique_key
  • multiple_key
  • primary_key
  • foreign_key
  • reverse_index
  • reverse_unique

集合数据类型

PDO_CUBRID 支持 SET/MULTISET/SEQUENCE 数据类型。如果您没有指定数据类型,则默认数据类型为 char。例如

示例 #3 在 CUBRID PDO 中使用默认数据类型插入 set。

<?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);
?>

示例 #4 在 CUBRID PDO 中插入 set 时指定数据类型

<?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 绑定数据类型用于 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 varying 数据类型 的最大字符串长度。

以下常量可用于设置事务隔离级别。它们可以传递给 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_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 模式标志
常量 描述
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 获取两个表的引用关系。

目录

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top