Функции 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$fpPDO::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$dataPDO::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$data0,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 — Получить запрошенную информацию о схеме