BMC IO DocsBMC IO Docs
IO v6
IO v7
Notes
Docs
IO v6
IO v7
Notes
Docs
  • IO Framework v7

    • О фреймворке
    • Что изменилось в 7 версии
    • Структура
    • Доступ к участкам проекта
    • Разворачивание нового проекта
  • Backend

    • Настройки проекта Conf.php
    • Настройки модуля Module.php
    • Настройки composer
    • Функции фреймворка
    • Глобальные переменные
    • Константы фреймворка
    • Event класс
    • IOCore класс
    • Route и работа с ними
    • Class и работа с ними
    • Api model и работа с ними
    • Template и работа с ними
    • Мультиязычность и словарь фраз
    • Bin скрипты и работа с ними
    • Cron скрипты и работа с ними
    • $ioSession и работа с сессией
    • $ioHash и работа с кешем
    • $iodb и работа с базой данных
  • Frontend

    • Twig шаблонизатор и работа с ним
    • Twig функции
    • Twig фильтры
    • Twig контекст
    • Настройка NPM
    • Сборка Frontend составляющей
    • Обращение к Api через JS

IO v7. $iodb и работа с базой данных

  • Описание
  • Переменные
    • db_link
    • last_query_all
    • last_query
    • db_connections
    • server
    • user
    • pass
    • db
    • lastconnect
    • log_query
    • code_page
    • time_zone
    • log_class_exists
    • quiet
    • _errorstr
    • _errorno
    • _info_loop_query
    • _time_query_max
    • columns
  • Методы
    • information_schema_load_current_db()
    • tryconnect()
    • connect()
    • create_conn()
    • is_valid()
    • ping()
    • usedb()
    • query()
    • query_params()
    • connected()
    • free_result()
    • fetch(), fetch_assoc()
    • fetchAll()
    • error()
    • errorstr()
    • num_rows()
    • last_insert_id()
    • get_var()
    • get_count()
    • escape()
    • escape2()
    • getWhereFromFilter()
    • insert()
    • insert_or_update()
    • insert_or_ignore()
    • update()
    • delete()
    • affected_rows()
    • found_rows()
    • search(), dbsearch2()
    • sync_items()
    • beginTransaction()
    • commit()
    • rollBack()

Описание

$iodb - глобальная переменная-объект для обращения к базе данных MySQL. Также, с ее помощью можно писать запросы в базу данных на языке SQL.

Переменная является экземпляром класса IO_MYSQL_PDO модуля IO7 (project/src/modules/io7/php/MYSQL_PDO.php).

Переменные

db_link

Объект соединения базы данных либо false.

object|bool $db_link = false

last_query_all

static string $last_query_all = ''

last_query

string $last_query = ''

db_connections

Массив соединений базы данных.

static array $db_connections = []

server

Адрес сервера базы данных.

string $server = ''

user

Имя пользователя базы данных.

string $user = ''

pass

Пароль пользователя базы данных.

string $pass = ''

db

Название базы данных.

string $db = ''

lastconnect

int $lastconnect = 1

log_query

Выводить лог запросов.

int $log_query = 0

code_page

Кодировка.

string $code_page = 'utf8'

time_zone

Временная зона (timezone).

string $time_zone = '+05:00'

log_class_exists

int $log_class_exists = -1

quiet

int $quiet = 0

_errorstr

Текст последней ошибки.

string $_errorstr = ''

_errorno

Номер последней ошибки.

string $_errorno = ''

_info_loop_query

int $_info_loop_query = 0

_time_query_max

int $_time_query_max = 2000

columns

array $columns = []

Методы

information_schema_load_current_db()

Выполняет SQL запрос "select * from information_schema.COLUMNS where TABLE_SCHEMA='".$this->db."';" и заполняет массив columns.

information_schema_load_current_db(): void

Пример:

global $iodb;
$iodb->information_schema_load_current_db();

tryconnect()

Создает соединение с базой данных MySQL, выбирает базу данных проекта, а также устанавливает кодировку и timezone. Вызывается при инициализации проекта.

tryconnect(): bool

Пример:

global $iodb;
$ret = $iodb->tryconnect();

connect()

Создает соединение с базой данных MySQL по указанным параметрам.

Применяется в том числе в функции tryconnect().

connect(string $server, string $user, string $pass, string|null $db = null): bool
Аргумент функцииТипОписаниеЗначение по умолчаниюОбязательный
$serverstringАдрес сервера БД.Да
$userstringИмя пользователя БД.Да
$passstringПароль пользователя БД.Да
$dbstring|nullНазвание базы данных.nullНет

Пример:

global $iodb;
$ret = $iodb->connect('server', 'username', 'password', 'trade');

create_conn()

Возвращает новый экземпляр класса IO_MYSQL_PDO.

static create_conn(string $server, string $user, string $pass, string $db = ''): object(IO_MYSQL_PDO)
Аргумент функцииТипОписаниеЗначение по умолчаниюОбязательный
$serverstringАдрес сервера БД.Да
$userstringИмя пользователя БД.Да
$passstringПароль пользователя БД.Да
$dbstringНазвание базы данных.''Нет

Пример:

$dbObj = IO_MYSQL_PDO::create_conn('server', 'username', 'password', 'trade');

is_valid()

Проверяет, является ли переменная соединения ресурсом, т.е. проверяет на наличие соединения с базой данных.

is_valid(): bool

Пример:

global $iodb;
$ret = $iodb->is_valid();

ping()

Проверяет, переменная соединения не пустая ли, и если нет, то пытается выполнить простой SQL запрос select, т.е. проверяет на наличие соединения с базой данных.

ping(): bool

Пример:

global $iodb;
$ret = $iodb->ping();

usedb()

Переключение на указанную базу данных.

usedb(string $dbname): void
Аргумент функцииТипОписаниеОбязательный
$dbnamestringНазвание базы данных.Да

Пример:

global $iodb;
$iodb->usedb('trade');

ВНИМАНИЕ

Используется в самых крайних случаях. На постоянной основе использовать не рекомендуется.

query()

Отправка SQL запроса в БД.

query(string $query = '', array|null $arr = null, bool $save_log = true): object(query_result)|false
Аргумент функцииТипОписаниеЗначение по умолчаниюОбязательный
$querystringSQL запрос.''Да
$queryarray|null???nullНет
$save_logbool???trueНет

Пример:

global $iodb;
$q = "
    SELECT *
    FROM `iodb`.`countries`
    WHERE `countryCode` = 'KZ';
";
$r = $iodb->query($q);
while($row = $iodb->fetch($r))
{
    v_dump($row);
}

query_params()

Отправка SQL запроса с возможностью указания для него параметров в виде массива.

query_params(string $query = '', array|null $arr = null, bool $save_log = true): object(query_result)
Аргумент функцииТипОписаниеЗначение по умолчаниюОбязательный
$querystringSQL запрос.''Да
$arrarray|nullПараметры для SQL запросаnullНет
$save_logbool???trueНет

Пример:

global $iodb;
$r = $iodb->query_params(
    'SELECT * FROM `users` WHERE `login` like :login',
    [
        ":login" => '%exinz%',
    ]
);
while($row = $iodb->fetch($r))
{
    v_dump($row);
}

connected()

Возвращает, есть ли соединение с БД.

connected(): bool

Пример:

global $iodb;
$connected = $iodb->connected(); // true

free_result()

Закрывает курсор, переводя запрос в состояние готовности к повторному запуску.

free_result(object $result): bool
Аргумент функцииТипОписаниеОбязательный
$resultobjectРезультат SQL запроса (query_result).Да

fetch(), fetch_assoc()

Расшифровка результата запроса (query_result) в ассоциативный массив (один объект).

fetch(object $result): array|false
alias
fetch_assoc(object $result): array|false
Аргумент функцииТипОписаниеОбязательный
$resultobject(query_result)Результат SQL запроса.Да

Пример для множества записей:

global $iodb;
$q = "
    SELECT *
    FROM `iodb`.`countries`
    WHERE `countryCode` = 'KZ';
";
$r = $iodb->query($q);
while($row = $iodb->fetch($r))
{
    v_dump($row);
}

Пример для одной записи:

global $iodb;
$q = "
    SELECT *
    FROM `iodb`.`countries`
    LIMIT 1;
";
$r = $iodb->query($q);
$row = $iodb->fetch($r);
v_dump($row);

fetchAll()

Расшифровка результата запроса (query_result) в ассоциативный массив (все записи запроса).

fetchAll(object $result): array|false
Аргумент функцииТипОписаниеОбязательный
$resultobject(query_result)Результат SQL запроса.Да

Пример:

global $iodb;
$q = "
    SELECT *
    FROM `iodb`.`countries`
    WHERE `countryCode` = 'KZ';
";
$r = $iodb->query($q);
$rows = $iodb->fetchAll($r);
foreach($rows as $row)
{
    v_dump($row);
}

error()

Вывод номера (кода) ошиюки, возникшей в последнем запросе.

Содержит в себе значение первого элемента массива из результата выполнения функции PDO::errorInfo().

error(): string

Пример:

global $iodb;
$iodb->query('bogus sql');
echo $iodb->error(); // HY000

errorstr()

Вывод номера (кода), а также текста ошибки, возникшей в последнем запросе.

Содержит в себе значение первого и третьего элементов массива из результата выполнения функции PDO::errorInfo().

errorstr(): string

Пример:

global $iodb;
$iodb->query('bogus sql');
echo $iodb->errorstr(); // [HY000]: near "bogus": syntax error

num_rows()

Возвращает количество строк, затронутых в указанном результате запроса.

num_rows(object $res): int
Аргумент функцииТипОписаниеОбязательный
$resobject(query_result)Результат SQL запроса.Да

Пример:

global $iodb;
$result = $iodb->query('SELECT * FROM users');
echo $iodb->num_rows($result); // 155

last_insert_id()

Возвращает ID последней вставленной строки или значение последовательности.

last_insert_id(): int|null

Пример:

global $iodb;
echo $iodb->last_insert_id();

get_var()

get_var(string $field, string $q, array $arr = []): mixed
Аргумент функцииТипОписаниеЗначение по умолчаниюОбязательный
$fieldstring???Да
$qstringТекст SQL запроса.Да
$arrarray???Нет

get_count()

get_count(string $q, string $field = 'count'): mixed
Аргумент функцииТипОписаниеЗначение по умолчаниюОбязательный
$qstringТекст SQL запроса.Да
$fieldstringНазвание поля, значения которого нужно получить.'count'Нет

escape()

Экранирует специальные символы в указанной строке, перед вставкой в SQL-запрос. Вспомогательная функция класса.

static escape(string $msg): string
Аргумент функцииТипОписаниеОбязательный
$msgstringОчищаемый текст.Да

Пример:

$msg = "Hello 'world'\nNew line \x1a End.";
echo IO_MYSQL_PDO::escape($msg); // Hello \'world\'\nNew line \\Z End.

escape2()

Приводит в порядок имена таблиц и полей для использования в запросе. Вспомогательная функция класса.

static escape2(string $field): string
Аргумент функцииТипОписаниеОбязательный
$msgstringОчищаемый текст.Да

Пример:

echo IO_MYSQL_PDO::escape2('iodb');

getWhereFromFilter()

Генератор SQL параметра where на основе фильтра фреймворка (как в dbsearch2 у class). Вспомогательная функция.

static getWhereFromFilter(array|null $filter = null): string
Аргумент функцииТипОписаниеОбязательный
$filterarray|nullМассив параметров фильтра.Да

Пример:

global $iodb;
$where = IO_MYSQL_PDO::getWhereFromFilter([
    '!=pkid' => [1, 2, 5],
    '%text' => 'elcom',
]);

insert()

Добавление записи в БД.

insert(string $table, array $data, array|null $data2 = null): int(1|-1)
Аргумент функцииТипОписаниеЗначение по умолчаниюОбязательный
$tablestringНазвание таблицы в БД.Да
$dataarrayМассив полей и их значений для добавления в БД.Да
$data2array|null???nullНет

Пример:

global $iodb;
$iodb->insert('users', [
    'login' => 'famio',
    'sname' => 'Фамилиев',
    'fname' => 'Имий',
    'lname' => 'Отчествович',
    'email' => 'famio@mail.site',
]);

insert_or_update()

В случае отсутствия записи в БД - добавление, иначе изменение.

insert_or_update(string $table, array $data, array|null $data2 = null): int(1|-1)
Аргумент функцииТипОписаниеЗначение по умолчаниюОбязательный
$tablestringНазвание таблицы в БД.Да
$dataarrayМассив полей и их значений для добавления или изменения в БД.Да
$data2array|null???nullНет

Пример:

global $iodb;
$iodb->insert_or_update('users', [
    'login' => 'famio',
    'sname' => 'Фамилиев',
    'fname' => 'Имий',
    'lname' => 'Отчествович',
    'email' => 'famio@mail.site',
]);

insert_or_ignore()

В случае отсутствия записи в БД - добавление, иначе ничего не делать.

insert_or_ignore(string $table, array $data, array|null $data2 = null): int(1|-1)
Аргумент функцииТипОписаниеЗначение по умолчаниюОбязательный
$tablestringНазвание таблицы в БД.Да
$dataarrayМассив полей и их значений для добавления в БД.Да
$data2array|null???nullНет

Пример:

global $iodb;
$iodb->insert_or_ignore('users', [
    'login' => 'famio',
    'sname' => 'Фамилиев',
    'fname' => 'Имий',
    'lname' => 'Отчествович',
    'email' => 'famio@mail.site',
]);

update()

Изменение записей в БД.

update(string $table, array $filter, array $data, array|null $data2 = null): int(1|-1)
Аргумент функцииТипОписаниеЗначение по умолчаниюОбязательный
$tablestringНазвание таблицы в БД.Да
$filterarrayМассив параметров фильтра (как в dbsearch2 у class).Да
$dataarrayМассив полей и их значений для изменения в БД.Да
$data2array|null???nullНет

Пример:

global $iodb;
// сбросить поле email для тех, у кого email_confirm не равен 1
$iodb->update('users', [
    '!=email_confirm' => 1,
], [
    'email' => '',
]);

delete()

Удаление записей из БД.

delete(string $table, array $filter, int|null $count = null): int(1|-1)
Аргумент функцииТипОписаниеЗначение по умолчаниюОбязательный
$tablestringНазвание таблицы в БД.Да
$filterarrayМассив параметров фильтра (как в dbsearch2 у class).Да
$countint|nullПараметр, указывающий limit в запросе.nullНет

Пример:

global $iodb;
// удалить тех, у кого email_confirm не равен 1
$iodb->update('users', [
    '!=email_confirm' => 1,
]);

affected_rows()

Получение задействованных строк.

Выполняет SQL запрос SELECT ROW_COUNT() as rows и возвращает значение поля rows.

affected_rows(): mixed

Пример:

global $iodb;
$iodb->affected_rows();

found_rows()

Получение найденных строк.

Выполняет SQL запрос SELECT FOUND_ROWS() as rows и возвращает значение поля rows.

found_rows(): mixed

Пример:

global $iodb;
$iodb->found_rows();

search(), dbsearch2()

Поиск записей в БД.

search(string $table, array $params): array|object(query_result)
alias
dbsearch2(string $table, array $params): array|object(query_result)
Аргумент функцииТипОписаниеОбязательный
$tablestringНазвание таблицы в БД.Да
$paramsarrayМассив параметров.Да

Доступные параметры массива $params:

ПараметрТипОписаниеЗначение по умолчанию
'filter'arrayМассив параметров фильтра (как в dbsearch2 у class)[]
'start'intСмещение offset.0
'limit'int|nullОграничение количества записей limit.null
'join'array|nullМассив join.null
'fields'array|nullМассив полей fields.null
'groupby'array|nullМассив группировки group by.null
'distinct'boolИсключать ли дубликаты.0
'calc_found_rows'boolВыполнять ли принудительный запрос получения количества записей в запросе.0
'order'array|nullМассив параметров порядка сортировки в формате "поле" => "asc|desc".null
'out'stringТип возвращаемого результата запроса.
  • 'object'
  • 'array'
  • 'pdo'
'object'

Пример:

global $iodb;
$ret = $iodb->search('users', [
    'filter' => [
        '!=email_confirm' => 0,
    ],
    'fields' => [
        "#users.login as user_login",
        "#users_questionary.birthday as user_birthday",
        "#users_questionary.about as user_about",
    ],
    'join' => [
        "inner join users_questionary on (users_questionary.user_pkid = users.pkid)",
    ],
    'order' => [
        'pkid' => 'asc',
        'ugmtimeAdd' => 'desc',
    ],
    'groupby' => [
        'user_login',
    ],
    'distinct' => true,
    'out' => 'array',
]);

sync_items()

Синхронизация элементов.

sync_items(string $table, array $params): void
Аргумент функцииТипОписаниеОбязательный
$tablestringНазвание таблицы в БД.Да
$paramsarrayМассив параметров.Да

Доступные параметры массива $params:

ПараметрТипОписаниеЗначение по умолчаниюОбязательный
'new_items'array|null???nullДа
'filter'array|null???nullДа
'find'array|null???nullДа
'create'function|null???nullНет
'update'function|null???nullНет
'delete'function|null???nullНет

beginTransaction()

Запуск транзакции.

beginTransaction(): bool

Пример:

global $iodb;
$iodb->beginTransaction();
try
{
    $iodb->insert('users', [
        'login' => 'famio',
    ]);
    $iodb->commmit();
} catch(Exception $e)
{
    $iodb->rollBack();
}

commit()

Фиксация транзакции в случае успеха.

commit(): bool

Пример:

global $iodb;
$iodb->beginTransaction();
try
{
    $iodb->insert('users', [
        'login' => 'famio',
    ]);
    $iodb->commmit();
} catch(Exception $e)
{
    $iodb->rollBack();
}

rollBack()

Откат транзакции в случае неудачи.

rollBack(): bool

Пример:

global $iodb;
$iodb->beginTransaction();
try
{
    $iodb->insert('users', [
        'login' => 'famio',
    ]);
    $iodb->commmit();
} catch(Exception $e)
{
    $iodb->rollBack();
}
Prev
$ioHash и работа с кешем