Подготовленные выражения
Защитите запросы к базе данных с помощью подготовленных выражений
«Подготовленные выражения» — бесплатный урок PHP Academy на CoddyKit. Это урок 5 из 6. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 6 уроков всего.
Обзор подготовленных запросов
Подготовленные запросы
Добро пожаловать на следующий урок! На этом уроке вы узнаете о подготовленных запросах и о том, как они делают взаимодействие с базой данных безопасным и эффективным. Начнём!

Что такое подготовленные запросы?
Что такое подготовленные запросы?
Подготовленные запросы — это функция систем управления базами данных, которая позволяет безопасно и эффективно выполнять SQL-запросы. Они отделяют код SQL от данных и предотвращают атаки с помощью SQL-инъекций.
Пример: использование заполнителей (:name, :email) вместо непосредственной вставки пользовательских данных в запрос.
Зачем использовать подготовленные запросы?
Зачем использовать подготовленные запросы?
Подготовленные запросы имеют несколько преимуществ:
- Безопасность: предотвращают SQL-инъекции благодаря экранированию пользовательских данных.
- Эффективность: позволяют повторно использовать один и тот же запрос с разными данными, сокращая время разбора запроса.
- Удобство сопровождения: делают код более понятным и упрощают его отладку.
Главное: всегда используйте подготовленные запросы при работе с данными, предоставленными пользователем.
Создание подготовленного запроса
Создание подготовленного запроса
Чтобы создать подготовленный запрос, выполните следующие шаги:
- Напишите SQL-запрос с заполнителями.
- Подготовьте запрос с помощью соединения с базой данных.
- Привяжите значения к заполнителям.
- Выполните запрос.
Пример:
Совет: используйте ассоциативные массивы для удобной привязки значений.
<?php
$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute(["name" => "Alice", "email" => "alice@mail.com"]);
?>Привязка значений
Привязка значений
Используйте методы bindParam() или bindValue(), чтобы привязывать значения к заполнителям. Пример:
<?php
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->bindParam(":name", $name);
$stmt->bindParam(":email", $email);
$name = "Bob";
$email = "bob@mail.com";
$stmt->execute();
?>
Использование подготовленных запросов для запросов SELECT
Использование подготовленных запросов для запросов SELECT
Подготовленные запросы работают со всеми типами SQL-запросов, включая SELECT. Пример:
Совет: используйте fetchAll(), чтобы получать несколько строк.
<?php
$sql = "SELECT * FROM users WHERE name = :name";
$stmt = $pdo->prepare($sql);
$stmt->execute(["name" => "Alice"]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo "Name: " . $result["name"] . ", Email: " . $result["email"];
?>
Повторное использование подготовленных запросов
Повторное использование подготовленных запросов
Подготовленные запросы можно повторно использовать с разными значениями, повышая эффективность. Пример:
<?php
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$users = [
["name" => "Charlie", "email" => "charlie@mail.com"],
["name" => "Dave", "email" => "dave@mail.com"]
];
foreach ($users as $user) {
$stmt->execute($user);
}
echo "Multiple records inserted successfully!";
?>
Предотвращение SQL-инъекций
Предотвращение SQL-инъекций
Подготовленные запросы экранируют специальные символы в пользовательских данных и предотвращают атаки с помощью SQL-инъекций. Пример:
<?php
$sql = "SELECT * FROM users WHERE email = :email";
$stmt = $pdo->prepare($sql);
$stmt->execute(["email" => "' OR 1=1; --"]);
$result = $stmt->fetch();
if ($result) {
echo "User found.";
} else {
echo "No user found.";
}
?>
Отличная работа!
Отличная работа!
Поздравляем! Вы научились использовать подготовленные запросы в PHP для защиты взаимодействия с базой данных. В следующем уроке мы рассмотрим расширенные методы составления запросов с объединением таблиц и агрегированием. Продолжайте программировать!

Часто задаваемые вопросы
Урок «Подготовленные выражения» бесплатный?
Да — полный текст урока «Подготовленные выражения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 6 уроков всего.
Чему я научусь в уроке «Подготовленные выражения»?
Защитите запросы к базе данных с помощью подготовленных выражений Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать PHP Academy?
Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 5 из 6.
Сколько времени занимает урок «Подготовленные выражения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке PHP Academy?
Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Введение в базы данных
- Подключение к базе данных MySQL
- Управление таблицами
- Выполнение операций CRUD
- Подготовленные выражения
- Работа с PDO