Функции 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::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, varchar, nchar, nchar при использовании CUBRID PDO API.

Следующие константы можно использовать для установки уровня изоляции транзакции. Данные константы можно использовать с функциями 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 Получение имени и типа view в CUBRID.
PDO::CUBRID_SCH_QUERY_SPEC Получение SQL-запроса, с помощью которого создано view.
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 add a note

User Contributed Notes

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