Урок 27: Подключение к базе данных MySQL

На 27 уроке мы погрузимся в одну из ключевых тем PHP, это работу с базами данных. Почти каждое веб-приложение так или иначе взаимодействует с данными, сохраняет пользователей, обрабатывает заказы, хранит контент. И для этого важно уметь «общаться» с базами данных. В этом уроке я научу вас подключаться к MySQL, выполнять запросы и выбирать между PDO и mysqli.

Базы данных (БД) это «хранилища» информации. Например, когда вы регистрируетесь на сайте, ваш логин и пароль сохраняются в БД. PHP предоставляет два основных способа работы с MySQL: mysqli и PDO (PHP Data Objects). Оба инструмента решают одну задачу — взаимодействие с БД, но подходы у них разные. Давайте разбираться.

1. Подключение через mysqli

mysqli (MySQL Improved) расширение PHP, созданное специально для работы с MySQL.
Оно поддерживает как процедурный, так и объектно-ориентированный стиль программирования.

Как подключиться к базе данных?

Для подключения понадобятся:

  • Хост (обычно localhost).
  • Имя пользователя БД.
  • Пароль.
  • Название базы данных.

Пример подключения (объектно-ориентированный стиль):

<?php  
$servername = "localhost";  
$username = "root";  
$password = "";  
$dbname = "my_database";  

// Создаем соединение  
$conn = new mysqli($servername, $username, $password, $dbname);  

// Проверяем подключение  
if ($conn->connect_error) {  
    die("Ошибка подключения: " . $conn->connect_error);  
}  
echo "Успешное подключение!";  
?>

Что здесь происходит?

  1. Создаем объект mysqli, передавая параметры подключения.
  2. Проверяем, есть ли ошибки (connect_error).
  3. Если ошибка есть — завершаем скрипт и выводим сообщение.

Выполнение простых запросов

Предположим, у нас есть таблица users:

CREATE TABLE users (  
    id INT AUTO_INCREMENT PRIMARY KEY,  
    name VARCHAR(50),  
    email VARCHAR(100)  
);

Пример 1: Вставка данных

$sql = "INSERT INTO users (name, email) VALUES ('Максим', 'max@example.com')";  

if ($conn->query($sql) === TRUE) {  
    echo "Данные добавлены!";  
} else {  
    echo "Ошибка: " . $conn->error;  
}

Пример 2: Выборка данных

$sql = "SELECT * FROM users";  
$result = $conn->query($sql);  

if ($result->num_rows > 0) {  
    while ($row = $result->fetch_assoc()) {  
        echo "ID: " . $row["id"] . ", Имя: " . $row["name"];  
    }  
} else {  
    echo "Нет данных.";  
}

Всегда закрывайте соединение после работы:

$conn->close();

2. Подключение через PDO

PDO более универсальное расширение. Оно работает не только с MySQL, но и с другими СУБД (PostgreSQL, SQLite). PDO использует подготовленные запросы, что повышает безопасность.

Подключение к БД

Пример:

<?php  
$servername = "localhost";  
$username = "root";  
$password = "";  
$dbname = "my_database";  

try {  
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);  
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
    echo "Успешное подключение!";  
} catch (PDOException $e) {  
    echo "Ошибка подключения: " . $e->getMessage();  
}  
?>

Пояснение:

  • try...catch ловит исключения (ошибки).
  • setAttribute() настраивает режим ошибок.

Выполнение запросов через PDO

Пример 1: Вставка данных с подготовленным запросом

$name = "Максим";  
$email = "max@example.com";  

$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";  
$stmt = $conn->prepare($sql);  

// Привязываем параметры  
$stmt->bindParam(':name', $name);  
$stmt->bindParam(':email', $email);  

if ($stmt->execute()) {  
    echo "Данные добавлены!";  
} else {  
    echo "Ошибка.";  
}

Пример 2: Выборка данных

$sql = "SELECT * FROM users";  
$stmt = $conn->query($sql);  

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);  

if (count($result) > 0) {  
    foreach ($result as $row) {  
        echo "ID: " . $row["id"] . ", Имя: " . $row["name"];  
    }  
} else {  
    echo "Нет данных.";  
}

Почему подготовленные запросы безопаснее?
Они отделяют данные от SQL-кода, предотвращая инъекции.

PDO или mysqli: что выбрать?

  • PDO подходит, если вы планируете работать с разными СУБД.
  • mysqli, если уверены, что будете использовать только MySQL.

Практические задачи

Задача 1: Создайте таблицу

Напишите скрипт, который создает таблицу products с полями:

  • id (INT, первичный ключ),
  • title (VARCHAR(100)),
  • price (DECIMAL(10,2)).

Подсказка: Используйте SQL-запрос CREATE TABLE.

Задача 2: Добавьте данные

С помощью mysqli или PDO добавьте в таблицу users нового пользователя.

Пример данных:

  • Имя: «Анна»,
  • Email: «max@test.ru».

Задача 3: Выведите данные

Напишите скрипт, который выводит все товары из таблицы products.

Итоги 27-го урока

Сегодня вы научились подключаться к MySQL через mysqli и PDO, выполнять запросы и защищаться от SQL-инъекций. Обязательно практикуйтесь, напишите собственные скрипты для вставки, обновления и удаления данных.

Если хотите глубже изучить PHP, посмотрите полный курс с уроками для начинающих.