PHP 8.4.2 Released!

Драйвер PDO_CUBRID: функции БД CUBRID

Введение

PDO_CUBRID — драйвер, через который PHP получает доступ к базам данных CUBRID. Для этого драйвер реализует интерфейс модуля PDO.

Замечание:

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

Установка

Для сборки модуля PDO_CUBRID потребуется установить СУБД CUBRID на том же хосте, на котором установили PHP. 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" (только вперёд), и чтобы изменить тип курсора в методе PDO::prepare() указывают параметр driver_options.

Время ожидания

Драйвер PDO_CUBRID поддерживает настройку времени ожидания выполнения SQL-запроса; значение времени ожидания устанавливают методом PDO::setAttribute().

Режим автоподтверждения и транзакции

Драйвер PDO_CUBRID поддерживает как режим автоподтверждения autocommit_mode, так и работу с транзакциями, а по умолчанию включён режим автоподтверждения. Состояние режима изменяют методом PDO::setAttribute().

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

Замечание: Перед отключением автоподтверждения ожидающие запросы автоматически фиксируются.

Множественные SQL-запросы

Драйвер PDO_CUBRID поддерживает множественные SQL-запросы. Множественные SQL-запросы разделяются точкой с запятой (;).

Информация о схеме

Драйвер PDO_CUBRID реализует метод PDO::cubrid_schema(), чтобы получать информацию о схеме.

Большие объекты

Драйвер PDO_CUBRID поддерживает типы данных BLOB и CLOB. Тип данных LOB (англ. сокр.: Large Objects) в модуле PDO представили как поток. Поэтому разрешается вставлять LOB-объект в базу данных путём связывания подготовленного запроса с потоком и получения LOB-объекта считыванием из потока, который возвращает PDO-объект, который настроили на работу с драйвером БД CUBRID. Например:

Пример #1 Пример вставки LOB-объекта в БД CUBRID

<?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

<?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() в PDO-объекте, который настроили на работу с БД CUBRID, вернёт ассоциативный массив, который содержит следующие значения:

  • 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 с типом данных по умолчанию

<?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

<?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 Получить связи двух таблиц.

Содержание

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top