Skip to main content

Field note

Что знаешь про выборку, джойны ?

PHPLearnRefresh

Что знаешь про выборку, джойны ? Спросят с вероятностью 27%

Для работы с базами данных и выполнения операций выборки и джойнов можно использовать различные расширения, такие как PDO (PHP Data Objects) или mysqli. Ниже я приведу примеры использования PDO, так как это расширение предоставляет более гибкий и безопасный интерфейс для работы с базой данных, включая подготовленные запросы, которые помогают избежать SQL-инъекций.

Допустим, у нас есть таблица users, и мы хотим выбрать имена и возраст пользователей старше 18 лет. Вот как это можно сделать с помощью PDO:

setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $query = "SELECT name, age FROM users WHERE age >= 18";
    $stmt = $pdo->query($query);

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo "Имя: " . $row['name'] . ", Возраст: " . $row['age'] . "
";
    }
} catch (PDOException $e) {
    die("Ошибка подключения: " . $e->getMessage());
}
?>

Теперь рассмотрим пример, где нам нужно получить имена пользователей и названия их заказов, объединив таблицы users и orders. Используем INNER JOIN для этого:

setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $query = "
    SELECT users.name, orders.order_name
    FROM users
    INNER JOIN orders ON users.id = orders.user_id
    ";
    $stmt = $pdo->query($query);

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo "Пользователь: " . $row['name'] . ", Заказ: " . $row['order_name'] . "
";
    }
} catch (PDOException $e) {
    die("Ошибка подключения: " . $e->getMessage());
}
?>

Общие советы

1️⃣Безопасность: Используйте подготовленные запросы для защиты от SQL инъекций, особенно когда в запросах используются данные, вводимые пользователями.

2️⃣ Отладка: Устанавливайте режим ошибок PDO на PDO::ERRMODE_EXCEPTION, чтобы получать исключения при ошибках базы данных, что облегчит отладку.

3️⃣Управление ресурсами: Всегда закрывайте соединения с базой данных и освобождайте ресурсы, когда они вам больше не нужны, например, закрывая объекты PDOStatement после их использования.

Эти примеры демонстрируют, как можно эффективно использовать PHP и PDO для работы с базами данных, выполняя операции выборки и джойнов для извлечения и объединения данных.