Блоки · Бази даних
MySQL
Зовнішня MySQL з flow: SELECT, INSERT, UPDATE, UPSERT, процедури, транзакції — через збережений конектор проєкту.
Призначення
Блок MySQL виконує одну операцію з вашою базою даних під час діалогу в мессенджері. Підключення налаштовується окремо в Налаштування → Бази даних (детально: /wiki/bazy-danyh-pidklyuchennya).
У блоці оберіть конектор (alias), дію та параметри. Значення з профілю контакта підставляються в WHERE, колонки та SQL-параметри через {змінні} — без конкатенації SQL з тексту чату.
Після виконання результат потрапляє у змінні контакта; далі можна використати Умову, array_foreach або json_parse.
Підготовка
1. Налаштування → Бази даних → додати MySQL (host, port 3306, база, логін, пароль).
2. Натисніть Тест з'єднання — має бути успіх (SELECT 1).
3. У flow перетягніть блок MySQL, оберіть конектор і дію.
4. Підключіть виходи Успіх і Помилка до наступних кроків.
- readOnly — заборона INSERT/UPDATE/DELETE на рівні конектора
- maxRows — ліміт рядків у відповіді (за замовч. 500)
- queryTimeoutMs — таймаут запиту (за замовч. 15 с)
- charset — кодування з'єднання (за потреби)
Усі дії (функції)
- **SELECT (таблиця + WHERE)** — оберіть у полі «Дія»
- **SELECT (SQL + параметри)** — оберіть у полі «Дія»
- **INSERT рядок** — оберіть у полі «Дія»
- **INSERT багато рядків** — оберіть у полі «Дія»
- **UPDATE** — оберіть у полі «Дія»
- **DELETE** — оберіть у полі «Дія»
- **UPSERT (ON DUPLICATE KEY)** — оберіть у полі «Дія»
- **Знайти один рядок** — оберіть у полі «Дія»
- **Підрахувати** — оберіть у полі «Дія»
- **Список таблиць** — оберіть у полі «Дія»
- **Структура таблиці** — оберіть у полі «Дія»
- **Схеми** — оберіть у полі «Дія»
- **JSON поле** — оберіть у полі «Дія»
- **Stored procedure** — оберіть у полі «Дія»
- **Функція** — оберіть у полі «Дія»
- **Транзакція** — оберіть у полі «Дія»
- **Довільний SQL** — оберіть у полі «Дія»
Коли яку дію обрати
SELECT (таблиця + WHERE) — простий запит: таблиця, колонки, умова з ?-параметрами (JSON-масив params).
SELECT (SQL + параметри) — довільний read-only SQL (лише SELECT / WITH … SELECT); params — JSON-масив значень.
INSERT / UPDATE / DELETE — CRUD з мапою колонка→значення; UPDATE/DELETE вимагають WHERE.
UPSERT — INSERT … ON DUPLICATE KEY UPDATE.
Знайти один рядок — SELECT … LIMIT 1 → зручно для перевірки статусу замовлення.
Підрахувати — COUNT(*) з фільтром.
Список таблиць / Структура таблиці — метадані для динамічних сценаріїв.
Stored procedure / Транзакція / Довільний SQL — advanced; DDL за замовчуванням заблоковано.
Змінні після блоку
- resultVariable — JSON-масив рядків або документів (якщо задано в блоці)
- resultVariable_count — кількість записів
- resultVariable_first — перший рядок/документ (зручно для find_one)
- db_last_insert_id — ID останнього INSERT (MySQL)
- db_last_error — текст помилки на гілці «Помилка»
Приклад сценарію
Користувач вводить номер замовлення → блок MySQL find_one (WHERE order_id = ?) → якщо знайдено, повідомлення зі статусом з _first через json_parse; якщо ні — гілка «Помилка» з підказкою звернутися до оператора.