Збережені процедури в mysql і php

Створення збереженої процедури в MySQL

Оскільки ХП зберігаються на сервері, то і створювати їх рекомендується безпосередньо на сервері, тобто не слід використовувати PHP або інші мови програмування для виконання SQL-команд по створенню збережених процедур.

Давайте розглянемо, як створити ХП на сервері MySQL, як створити користувача для неї і як призначити йому привілеї на запуск нашої ХП. Потім перевіримо коректність результату. Для цього я скористаюся MySQL Workbench. Можна використовувати і інші програми (наприклад, PHPMyAdmin). Ви можете вибрати той інструментарій, який вам більше підходить.

Припустимо, наша таблиця виглядає так:

Для нашого службовця, якому потрібна статистична інформація по зарплатах (середня, максимальна, мінімальна і т.п.) з цієї таблиці, ми створимо користувача 'tr' наступним чином:

Тепер призначимо цьому користувачеві єдиний привілей EXECUTE в тій схемі, де знаходиться таблиця salary:

Ми можемо переконатися в тому, що призначили потрібну привілей, відкривши «Users and Privileges» в MySQL Bench:

Збережені процедури в mysql і php

Тепер створимо саму ХП наступним чином:

Зауваження: всі виконані операції вимагають адмінських прав на сервері MySQL.

Після виконання цієї команди в MySQL Workbench, буде створена готова до використання ХП avg_sal. Вона повертає середню зарплату по таблиці salary.

Щоб перевірити, чи дійсно користувач tr може запустити ХП і не має доступу до таблиці salary. нам потрібно перепідключитися до сервера MySQL, залягання як tr. В MySQL Workbench це можна зробити створивши іншу сполуку і вказавши потрібного користувача і його пароль.

Після підключення з під tr. перше, що ми помічаємо, - це те, що користувач взагалі не бачить будь-яких таблиць, бачить тільки ХП:

Збережені процедури в mysql і php

Очевидно, що користувач tr не може звертатися до жодної з таблиць (а значить, не може бачити і докладну інформацію про зарплати з таблиці salary), але може запустити створену нами ХП, яка поверне йому середню зарплату по компанії:

Буде відображена середня зарплата.

Отже, ми виконали всю підготовчу роботу: створили користувача, призначили йому привілеї, створили ХП і протестували її. Тепер подивимося, як викликати цю ХП з PHP.

Виклик процедури, що з PHP

При використанні PDO виклик ХП досить простий. Ось відповідний PHP-код:

Змінна $ res містить середню зарплату по таблиці salary. Тепер користувач може виробляти подальшу обробку виведення за допомогою PHP.

У цій статті ми розглянули давно забуту складову баз даних MySQL. збережені процедури. Переваги використання ХП очевидні, але дозвольте мені нагадати: Збережені процедури дозволяють нам застосовувати більш строгий контроль доступу до певних даних, коли це потрібно бізнес-логікою.

Крім того, ми продемонстрували основні кроки в створенні збережених процедур, користувачів і призначення відповідних привілеїв, показали, як ХП викликаються з PHP.

Тейлор Рен

Схожі статті