Підключення та керування підключеннями
Для встановлення з'єднань створюють екземпляри базового класу PDO. Не має значення, який драйвер хотілося використовувати; все одно буде використано ім'я класу PDO. Конструктор класу приймає параметри для завдання джерела бази даних (DSN), а також необов'язкові ім'я користувача та пароль (якщо є).
Приклад #1 Підключення до MySQL
Loading...
Якщо при підключенні сталася помилка, буде викинуто виняток PDOException
. Його можна перехопити й обробити, або залишити на відкуп глобальному обробнику помилок, заданий функцією set_exception_handler()
Приклад #2 Обробка помилок підключення
Loading...
Увага
Як і решта винятки, исключениеPDOException можна відловити явно через блок catch
или неявно — через функциюset_exception_handler()По умолчанию же непойманное исключение будет преобразовано в фатальную ошибку уровня**E_FATAL_ERROR
**. Фатальна помилка міститиме стек викликів, з'являється ризик витоку інформації про з'єднання. Тому на сервері, який працює у виробничому середовищі, у файлі php.ini для опції display_errors
має бути встановлено значення
При успішному підключенні до бази даних до скрипта буде повернено створений об'єкт PDO. З'єднання залишається активним протягом життя об'єкта. Щоб закрити з'єднання, необхідно знищити об'єкт шляхом видалення всіх посилань на нього (цього можна досягти, привласнюючи null
всім змінним, що вказує на об'єкт). Якщо не зробити цього очевидно, PHP автоматично закриє з'єднання після закінчення роботи скрипта.
Зауваження: Якщо існують інші посилання на цей екземпляр PDO (наприклад, з об'єкта PDOStatement або інші змінні, що посилаються на нього), вони також повинні бути видалені (наприклад, присвоєнням)
null
змінної, що посилається на PDOStatement).
Приклад #3 Закриття з'єднання
Loading...
Багато додатках може бути корисним використання постійних з'єднань до баз даних. Постійні з'єднання не закриваються при завершенні роботи скрипта, вони кешуються і використовуються повторно, коли інший скрипт запитує з'єднання з тими самими обліковими даними. Постійні з'єднання дозволяють уникнути створення нових підключень щоразу, коли потрібен обмін даними з базою, що в результаті дає приріст швидкості роботи таких програм.
Приклад #4 Постійні з'єднання
Loading...
Значение параметра**PDO::ATTR_PERSISTENT
** перетворюється на логічне значення (bool) (включити/вимкнути постійні підключення), якщо це не числовий рядок (string), який у цьому випадку дозволяє використовувати кілька пулів постійних підключень. Це корисно, якщо різні з'єднання використовують несумісні налаштування, наприклад різні значення PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
Зауваження :
Щоб використовувати постійні з'єднання, необхідно додати константу
PDO::ATTR_PERSISTENT
масив параметрів драйвера, який передається конструктору PDO. Якщо просто встановити цей атрибут функцією PDO::setAttribute() вже після створення об'єкта, драйвер не використовуватиме постійні з'єднання.
Зауваження :
Якщо ви використовуєте PDO ODBC драйвер і ваші ODBC бібліотеки підтримують об'єднання підключень до пулу (ODBC Connection Pooling) (unixODBC і Windows точно підтримують, але можуть бути й інші), то рекомендується замість постійних з'єднань користуватися цим пулом. Пул підключень ODBC доступний для всіх модулів поточного процесу; якщо PDO сам кешує з'єднання, це з'єднання буде недоступне іншим модулям і потрапить у пул. У результаті кожен модуль створюватиме додаткові підключення для своїх потреб.