CakeFest 2024: The Official CakePHP Conference

Функции CUBRID (PDO_CUBRID)

Введение

PDO_CUBRID - драйвер, реализующий интерфейс PHP Data Objects (PDO) для доступа к базам данных CUBRID.

Замечание:

Текущая версия PDO_CUBRID не поддерживает постоянные соединения.

Установка

Для сборки модуля PDO_CUBRID, на том же хосте должен быть установлен СУБД CUBRID. PDO_CUBRID является модулем » PECL, так что для его установки следуйте инструкциям Установка модулей PECL. Для указания команде configure директории с установленной базой CUBRID, используйте следующий синтаксис:

   $ ./configure --with-pdo-cubrid=/path/to/CUBRID[,shared]
По умолчанию configure будет искать соответствующие библиотеки, руководствуясь значением переменной окружения CUBRID.

DLL для этого модуля PECL пока недоступна. Смотрите также раздел сборка на Windows. Для более подробной информации о ручной установке модуля под Linux и Windows, читайте build-guide.html, содержащийся в пакете PECL.

Особенности

Особенности PDO_CUBRID
Особенности Описание
Перематываемые курсоры PDO_CUBRID поддерживает перематываемые курсоры. Типом курсора по умолчанию является "forward only" (только вперёд), для его изменения можно использовать параметр driver_options в PDO::prepare().
Время ожидания PDO_CUBRID поддерживает настройку времени ожидания выполнения SQL-запроса.; Для его настройки используйте метод PDO::setAttribute().
Режим автоподтверждения и транзакции PDO_CUBRID поддерживает как режим автоподтверждения, так и работу с транзакциями. По умолчанию используется режим автоподтверждения. Для изменения режима используйте метод PDO::setAttribute().

Если вы используете PDO::beginTransaction() для старта транзакции, то автоподтверждение будет автоматически запрещено и снова разрешено после PDO::commit() или PDO::rollBack(). Обратите внимание, что перед отключением автоподтверждения, все ожидающие запросы будут автоматически подтверждены.

Множественные SQL-запросы PDO_CUBRID поддерживает множественные SQL-запросы. Множественные SQL-запросы разделяются точкой с запятой (;)
Информация о схеме PDO_CUBRID реализует функцию PDO::cubrid_schema() для получения информации о схеме.
LOBs PDO_CUBRID поддерживает типы данных BLOB/CLOB. LOB в PDO представляется как поток, следовательно вы можете вставлять LOB путём связывания с потоком и получать LOB путём чтения из потока, возвращённого CUBRID PDO. К примеру:

Пример #1 Вставка LOB в 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();
?>

Пример #2 Получение LOB в 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]);
?>

Метаинформация о столбцах Метод PDOStatement::getColumnMeta() в CUBRID PDO вернёт ассоциативный массив, содержащий следующие значения:
  • 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 с типом данных по умолчанию.

<?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):
  • CHAR
  • STRING
  • NCHAR
  • VARNCHAR
  • BIT
  • VARBIT
  • NUMERIC
  • NUMBER
  • INT
  • SHORT
  • BIGINT
  • MONETARY
  • FLOAT
  • DOUBLE
  • DATE
  • TIME
  • DATETIME
  • TIMESTAMP

Предопределённые константы

Драйвер определяет перечисленные ниже константы, которые доступны только тогда, когда PHP собрали с поддержкой этого модуля, или модуль динамически загрузили во время исполнения кода. Зависимые от драйвера константы разрешно использовать только совместно с этим драйвером. Атрибуты одного драйвера с другим драйвером ведут себя неожиданно. Для проверки названия драйвера, которое содержит атрибут PDO::ATTR_DRIVER_NAME, вызывают метод PDO::getAttribute(), если код запускается с несколькими драйверами.

Следующими константами устанавливают атрибуты базы данных. Эти константы передают в методы 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, varchar, nchar, nchar при работе с API драйвера CUBRID модуля PDO.

Следующие константы устанавливают уровень изоляции транзакции. Эти константы передают в методы 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 Получить связи двух таблиц.

Содержание

  • PDO_CUBRID DSN — Соединение с базой данных CUBRID
  • PDO::cubrid_schema — Получить запрошенную информацию о схеме
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top