
Выполнение SQL-запросов в PHP: Подробный гид с примерами
Работа с базами данных — одна из ключевых задач в разработке веб-приложений. PHP и MySQL — популярный дуэт, который используется на тысячах сайтов. В этой статье мы подробно рассмотрим, как выполнять SQL-запросы в PHP, какие способы существуют, как обезопасить код от SQL-инъекций и приведем реальные примеры.
—
Содержание
1. Подключение к базе данных
2. Простые SQL-запросы: SELECT, INSERT, UPDATE, DELETE
3. Работа с MySQLi
4. Работа с PDO
5. Подготовленные выражения (Prepared Statements)
6. Обработка ошибок
7. Советы по безопасности
8. Заключение
—
1. Подключение к базе данных
Перед выполнением любых запросов, необходимо установить соединение с базой данных. Это можно сделать с помощью двух расширений: MySQLi и PDO.
Пример подключения через MySQLi:
$host = «localhost»;
$user = «root»;
$password = «»;
$dbname = «test_db»;
$conn = new mysqli($host, $user, $password, $dbname);
if ($conn->connect_error) {
die(«Ошибка подключения: » . $conn->connect_error);
}
Пример подключения через PDO:
try {
$pdo = new PDO(«mysql:host=localhost;dbname=test_db», «root», «»);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die(«Ошибка подключения: » . $e->getMessage());
}
—
2. Простые SQL-запросы
SELECT — выборка данных
$result = $conn->query(«SELECT * FROM users»);
while ($row = $result->fetch_assoc()) {
echo «ID: » . $row[«id»] . » Имя: » . $row[«name»] . «<br>»;
}
INSERT — добавление записи
$sql = «INSERT INTO users (name, email) VALUES (‘Алексей’, ‘aleksei@mail.com’)»;
if ($conn->query($sql) === TRUE) {
echo «Новая запись добавлена»;
}
UPDATE — обновление данных
$sql = «UPDATE users SET email=’alex@mail.com’ WHERE id=1»;
$conn->query($sql);
DELETE — удаление записи
$sql = «DELETE FROM users WHERE id=2»;
$conn->query($sql);
—
3. Работа с MySQLi
MySQLi — улучшенное расширение для работы с MySQL.
Пример с MySQLi (обработка и вывод результатов):
$sql = «SELECT * FROM users»;
if ($result = $conn->query($sql)) {
while ($row = $result->fetch_assoc()) {
echo «Пользователь: » . $row[«name»] . «<br>»;
}
$result->free();
}
—
4. Работа с PDO
PDO (PHP Data Objects) — универсальный способ подключения к разным базам данных.
Пример SELECT через PDO:
$stmt = $pdo->query(«SELECT * FROM users»);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo «Имя: » . $row[‘name’] . «<br>»;
}
—
5. Подготовленные выражения (Prepared Statements)
Подготовленные выражения повышают безопасность, особенно при работе с пользовательским вводом.
MySQLi подготовленное выражение:
$stmt = $conn->prepare(«SELECT * FROM users WHERE email = ?»);
$stmt->bind_param(«s», $email);
$email = «alex@mail.com»;
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
echo $row[«name»];
PDO подготовленное выражение:
$stmt = $pdo->prepare(«SELECT * FROM users WHERE email = :email»);
$stmt->bindParam(‘:email’, $email);
$email = «alex@mail.com»;
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo $row[«name»];
—
6. Обработка ошибок
Ошибки при выполнении запросов могут вызывать сбои в работе сайта. Хорошей практикой является логирование или информирование разработчика:
if (!$conn->query($sql)) {
echo «Ошибка: » . $conn->error;
}
В PDO:
try {
$pdo->query($sql);
} catch (PDOException $e) {
echo «Ошибка выполнения: » . $e->getMessage();
}
—
7. Советы по безопасности
1. Никогда не вставляйте напрямую пользовательский ввод в SQL-запросы.
2. Используйте подготовленные выражения.
3. Ограничьте привилегии пользователя базы данных.
4. Скрывайте ошибки SQL на продакшене.
5. Регулярно делайте резервное копирование данных.
—
8. Заключение
Работа с базами данных — неотъемлемая часть веб-разработки. В этой статье мы рассмотрели, как выполнять SQL-запросы в PHP с использованием расширений MySQLi и PDO. Особенно важно соблюдать меры безопасности, чтобы защитить данные и избежать уязвимостей, таких как SQL-инъекции.