Выполнение SQL — запросов в PHP

Выполнение 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-инъекции.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Сайт создал Романенко Артем