PHP8 PDO_CUBRID

2024-03-26 09:50 更新

简介 

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

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。有关在 Linux 和 Windows手动,请阅读PECL包CUBRID中的build-guide.html 参考。

特征 

PDO_CUBRID特点
特征描述
可滚动光标PDO_CUBRID支持可滚动光标。默认游标类型为 仅向前,您可以使用 PDO::p repare() 中的参数 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() 来获取架构信息。
罗布斯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 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]);
?>
列元CUBRID PDO 中的 PDOStatement::getColumnMeta() 将返回包含以下值的关联数组:
  • 类型
  • 名字
  • 桌子
  • 定义
  • 精度
  • 规模
  • 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 中插入默认数据类型的设置。

<?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 中设置插入时指定数据类型

<?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的第五个参数):
  • 字符串
  • NCHAR
  • 瓦恩查尔
  • 瓦比特
  • 数值的
  • 国际
  • 比金特
  • 货币
  • 日期
  • 时间
  • 日期时间
  • 时间戳

预定义常量 

下列常量由此驱动定义,且仅在扩展编译入 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只读。bit、varbit、char、 的最大字符串长度 使用 CUBRID PDO 时的 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获取拖曳表的参考关系。

目录 

  • PDO_CUBRID DSN — 连接到 CUBRID 数据库
  • PDO::cubrid_schema — 获取请求的架构信息


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号