PHP8 PDO_CUBRID

2024-03-26 09:50 更新

簡(jiǎn)介 

PDO_CUBRID 是一個(gè)驅(qū)動(dòng)程序,它實(shí)現(xiàn)了 PHP 數(shù)據(jù)對(duì)象 (PDO) 接口 啟用從 PHP 到 CUBRID 數(shù)據(jù)庫的訪問。

注意:當(dāng)前版本的 PDO_CUBRID 現(xiàn)在不支持持久連接。

安裝 

要構(gòu)建 PDO_CUBRID 擴(kuò)展,必須將 CUBRID DBMS 安裝在 與PHP相同的系統(tǒng)。 PDO_CUBRID 是 ? PECL 擴(kuò)展,因此請(qǐng)按照 PECL 擴(kuò)展安裝中的說明安裝 PDO_CUBRID 擴(kuò)展。 發(fā)出 configure 命令以指向 CUBRID 基本目錄如下:

   $ ./configure --with-pdo-cubrid=/path/to/CUBRID[,shared]
configure 

命令默認(rèn)為環(huán)境變量的值。

CUBRID

PECL 擴(kuò)展的 DLL 當(dāng)前不可用。參見 在 Windows 上構(gòu)建章節(jié)。有關(guān)在 Linux 和 Windows手動(dòng),請(qǐng)閱讀PECL包CUBRID中的build-guide.html 參考。

特征 

PDO_CUBRID特點(diǎn)
特征描述
可滾動(dòng)光標(biāo)PDO_CUBRID支持可滾動(dòng)光標(biāo)。默認(rèn)游標(biāo)類型為 僅向前,您可以使用 PDO::p repare() 中的參數(shù) driver_options 來更改游標(biāo)類型。
超時(shí)PDO_CUBRID支持sql語句執(zhí)行超時(shí)設(shè)置; 您可以使用 PDO::setAttribute() 設(shè)置超時(shí)值。
Autocommit_mode和交易PDO_CUBRID 同時(shí)支持autocommit_mode和事務(wù),并且 默認(rèn)情況下,autocommit_mode處于啟用狀態(tài)。您可以使用 PDO::setAttribute() 更改其狀態(tài)。

如果您使用 PDO::beginTransaction() 開始 交易,它將自動(dòng)禁用autocommit_mode并且 在 PDO::commit() 或 PDO::rollBack() 之后恢復(fù)它。請(qǐng)注意,在禁用 autocommit_mode,任何待處理的工作都會(huì)自動(dòng)提交。

多個(gè) SQL 語句PDO_CUBRID支持多個(gè) SQL 語句。多個(gè) SQL 語句之間用分號(hào) (;) 分隔
架構(gòu)信息PDO_CUBRID 實(shí)現(xiàn)一個(gè)函數(shù) PDO::cubrid_schema() 來獲取架構(gòu)信息。
羅布斯PDO_CUBRID支持 BLOB/CLOB 數(shù)據(jù)類型。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() 將返回包含以下值的關(guān)聯(lián)數(shù)組:
  • 類型
  • 名字
  • 桌子
  • 定義
  • 精度
  • 規(guī)模
  • not_null
  • auto_increment
  • unique_key
  • multiple_key
  • primary_key
  • foreign_key
  • reverse_index
  • reverse_unique
集合數(shù)據(jù)類型PDO_CUBRID支持 SET/MULTISET/SEQUENCE 數(shù)據(jù)類型。如果未指定數(shù)據(jù)類型, 默認(rèn)數(shù)據(jù)類型為 char,例如:

示例 #3 在 CUBRID PDO 中插入默認(rèn)數(shù)據(jù)類型的設(shè)置。

<?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 中設(shè)置插入時(shí)指定數(shù)據(jù)類型

<?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 綁定數(shù)據(jù)類型:(PDOStatement::bindParam的第五個(gè)參數(shù)):
  • 字符串
  • NCHAR
  • 瓦恩查爾
  • 瓦比特
  • 數(shù)值的
  • 數(shù)
  • 國際
  • 比金特
  • 貨幣
  • 日期
  • 時(shí)間
  • 日期時(shí)間
  • 時(shí)間戳

預(yù)定義常量 

下列常量由此驅(qū)動(dòng)定義,且僅在擴(kuò)展編譯入 PHP 或在運(yùn)行時(shí)動(dòng)態(tài)載入時(shí)可用。 另外,使用此驅(qū)動(dòng)時(shí),僅會(huì)使用這些驅(qū)動(dòng)特定的常量。 使用其他驅(qū)動(dòng)的驅(qū)動(dòng)特定的常量可能會(huì)導(dǎo)致不可預(yù)見的情況。 如果代碼可運(yùn)行于多個(gè)驅(qū)動(dòng),PDO::getAttribute() 可被用于獲取 PDO_ATTR_DRIVER_NAME 屬性以檢查驅(qū)動(dòng)。

設(shè)置數(shù)據(jù)庫屬性時(shí),可以使用以下常量。 它們可以傳遞給 PDO::getAttribute() 或 PDO::setAttribute()。

PDO::CUBRID 屬性標(biāo)志
不斷描述
PDO::CUBRID_ATTR_ISOLATION_LEVEL數(shù)據(jù)庫連接的事務(wù)隔離級(jí)別。
PDO::CUBRID_ATTR_LOCK_TIMEOUT事務(wù)超時(shí)(以秒為單位)。
PDO::CUBRID_ATTR_MAX_STRING_LENGTH只讀。bit、varbit、char、 的最大字符串長度 使用 CUBRID PDO 時(shí)的 varchar、nchar、nchar 數(shù)據(jù)類型各不相同 應(yīng)用程序接口。

設(shè)置事務(wù)隔離時(shí),可以使用以下常量 水平。它們可以傳遞給 PDO::getAttribute() 或 由 PDO::setAttribute() 返回。

PDO::CUBRID 隔離級(jí)別標(biāo)志
不斷描述
PDO::TRAN_COMMIT_CLASS_UNCOMMIT_INSTANCE最低隔離級(jí)別 (1)。骯臟的、不可重復(fù)的或 元組可能會(huì)發(fā)生幻像讀取,并且可能會(huì)出現(xiàn)不可重復(fù)的讀取 也發(fā)生在表中。
PDO::TRAN_COMMIT_CLASS_COMMIT_INSTANCE相對(duì)較低的隔離級(jí)別 (2)。骯臟的閱讀不會(huì) 發(fā)生,但可能會(huì)發(fā)生不可重復(fù)或幻像讀取。
PDO::TRAN_REP_CLASS_UNCOMMIT_INSTANCECUBRID (3) 的缺省隔離。骯臟的、不可重復(fù)的或 元組可能會(huì)發(fā)生幻像讀取,但可確保可重復(fù)讀取 對(duì)于表。
PDO::TRAN_REP_CLASS_COMMIT_INSTANCE相對(duì)較低的隔離級(jí)別 (4)。骯臟的閱讀不會(huì) 發(fā)生,但不可重復(fù)或幻像讀取可能。
PDO::TRAN_REP_CLASS_REP_INSTANCE相對(duì)較高的隔離級(jí)別 (5)。臟的或不可重復(fù)的 不會(huì)發(fā)生讀取,但可能會(huì)發(fā)生幻像讀取。
PDO::TRAN_SERIALIZABLE最高隔離級(jí)別 (6)。有關(guān)并發(fā)性的問題 (例如臟讀、不可重復(fù)讀、幻象讀等)不要 發(fā)生。

獲取架構(gòu)信息時(shí),可以使用以下常量。他們 可以傳遞給 PDO::cubrid_schema()。

PDO::CUBRID 架構(gòu)標(biāo)志
不斷描述
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獲取實(shí)例方法。實(shí)例方法是一種名為 由類實(shí)例。它比類方法更頻繁地使用 因?yàn)榇蠖鄶?shù)操作都是在實(shí)例中執(zhí)行的。
PDO::CUBRID_SCH_TABLE_METHOD獲取類方法。類方法是由 類對(duì)象。它通常用于創(chuàng)建新的類實(shí)例或 初始化它。它還用于訪問或更新類 屬性。
PDO::CUBRID_SCH_METHOD_FILE獲取表的方法所在的文件的信息 定義。
PDO::CUBRID_SCH_SUPER_TABLE獲取表繼承屬性的表的名稱和類型 從。
PDO::CUBRID_SCH_SUB_TABLE獲取從中繼承屬性的表的名稱和類型 這張表。
PDO::CUBRID_SCH_CONSTRAINT獲取表約束。
PDO::CUBRID_SCH_TRIGGER獲取表觸發(fā)器。
PDO::CUBRID_SCH_TABLE_PRIVILEGE獲取表的權(quán)限信息。
PDO::CUBRID_SCH_COL_PRIVILEGE獲取列的權(quán)限信息。
PDO::CUBRID_SCH_DIRECT_SUPER_TABLE獲取表的直接超級(jí)表。
PDO::CUBRID_SCH_PRIMARY_KEY獲取表主鍵。
PDO::CUBRID_SCH_IMPORTED_KEYS獲取表的導(dǎo)入鍵。
PDO::CUBRID_SCH_EXPORTED_KEYS獲取表的導(dǎo)出鍵。
PDO::CUBRID_SCH_CROSS_REFERENCE獲取拖曳表的參考關(guān)系。

目錄 

  • PDO_CUBRID DSN — 連接到 CUBRID 數(shù)據(jù)庫
  • PDO::cubrid_schema — 獲取請(qǐng)求的架構(gòu)信息


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)