Курс — «Программирование на PHP8 для начинающих» — #22 Взаимодействие с базами данных. Подключение к MySQL с помощью PDO
Здравствуйте, дорогие друзья.
Взаимодействие с базами данных является важной частью разработки веб-приложений. PHP Data Objects (PDO) предоставляет унифицированный интерфейс для работы с различными базами данных, включая MySQL. В этом разделе мы рассмотрим, как подключиться к базе данных MySQL с помощью PDO.
Преимущества использования PDO
- Унифицированный интерфейс: PDO предоставляет единый интерфейс для работы с различными базами данных, что упрощает перенос кода между различными системами управления базами данных (СУБД).
- Безопасность: PDO поддерживает подготовленные выражения и связывание параметров, что помогает предотвратить SQL-инъекции.
- Гибкость: PDO поддерживает множество функций для работы с базами данных, включая транзакции, обработку ошибок и многое другое.
Установка и настройка PDO
PDO является встроенным расширением PHP, поэтому для его использования не требуется установка дополнительных библиотек. Однако, чтобы использовать PDO с MySQL, необходимо убедиться, что расширение pdo_mysql
включено в вашем php.ini
файле.
1 2 |
; Включение расширения pdo_mysql extension=pdo_mysql |
Подключение к базе данных MySQL
Для подключения к базе данных MySQL с помощью PDO используется класс PDO
. Конструктор класса PDO
принимает три параметра: DSN (Data Source Name), имя пользователя и пароль.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php $dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8mb4'; $username = 'root'; $password = ''; try { $pdo = new PDO($dsn, $username, $password); // Установка режима ошибок PDO на исключения $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Подключение к базе данных успешно."; } catch (PDOException $e) { echo "Ошибка подключения: " . $e->getMessage(); } ?> |
Выполнение запросов
После подключения к базе данных можно выполнять различные SQL-запросы, такие как SELECT, INSERT, UPDATE и DELETE.
- Выполнение запроса SELECT:
1 2 3 4 5 6 |
<?php $stmt = $pdo->query("SELECT * FROM users"); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo "ID: " . $row['id'] . " Name: " . $row['name'] . "<br>"; } ?> |
2. Выполнение запроса INSERT:
1 2 3 4 5 6 7 8 9 10 11 |
<?php $stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)"); $stmt->bindParam(':name', $name); $stmt->bindParam(':email', $email); $name = 'John Doe'; $email = 'john@example.com'; $stmt->execute(); echo "Пользователь добавлен успешно."; ?> |
3. Выполнение запроса UPDATE:
1 2 3 4 5 6 7 8 9 10 11 |
<?php $stmt = $pdo->prepare("UPDATE users SET name = :name WHERE id = :id"); $stmt->bindParam(':name', $name); $stmt->bindParam(':id', $id); $name = 'Jane Doe'; $id = 1; $stmt->execute(); echo "Пользователь обновлен успешно."; ?> |
4. Выполнение запроса DELETE:
1 2 3 4 5 6 7 8 9 |
<?php $stmt = $pdo->prepare("DELETE FROM users WHERE id = :id"); $stmt->bindParam(':id', $id); $id = 1; $stmt->execute(); echo "Пользователь удален успешно."; ?> |
Пример полного цикла работы с базой данных MySQL с помощью PDO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<?php // Подключение к базе данных $dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8mb4'; $username = 'root'; $password = ''; try { $pdo = new PDO($dsn, $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Подключение к базе данных успешно.<br>"; // Создание таблицы $pdo->exec("CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL )"); // Добавление пользователя $stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)"); $stmt->bindParam(':name', $name); $stmt->bindParam(':email', $email); $name = 'John Doe'; $email = 'john@example.com'; $stmt->execute(); echo "Пользователь добавлен успешно.<br>"; // Обновление пользователя $stmt = $pdo->prepare("UPDATE users SET name = :name WHERE id = :id"); $stmt->bindParam(':name', $name); $stmt->bindParam(':id', $id); $name = 'Jane Doe'; $id = 1; $stmt->execute(); echo "Пользователь обновлен успешно.<br>"; // Выборка пользователей $stmt = $pdo->query("SELECT * FROM users"); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo "ID: " . $row['id'] . " Name: " . $row['name'] . " Email: " . $row['email'] . "<br>"; } // Удаление пользователя $stmt = $pdo->prepare("DELETE FROM users WHERE id = :id"); $stmt->bindParam(':id', $id); $id = 1; $stmt->execute(); echo "Пользователь удален успешно.<br>"; } catch (PDOException $e) { echo "Ошибка подключения: " . $e->getMessage(); } ?> |
Взаимодействие с базами данных с помощью PDO предоставляет мощные и гибкие возможности для работы с различными СУБД. PDO обеспечивает безопасность, унифицированный интерфейс и множество функций для выполнения различных операций с базами данных.
На этом все. Всем хорошего дня!
Цикл статей по курсу — «Программирование на PHP8 для начинающих».