SELECT без параметров

Существует несколько способов выполнения SELECT-запроса с помощью PDO, которые различаются в основном наличием параметров, типом параметров и типом результата. Я покажу примеры для каждого случая, чтобы вы могли выбрать тот, который подходит вам больше всего.

Просто убедитесь, что у вас правильно настроена переменная соединения PDO, которая должна выполнять SQL-запросы с помощью PDO и сообщать вам о возможных ошибках.

Если в запросе не будут использоваться переменные, мы можем использовать обычный метод query() вместо prepare и execute.

// получение всех пользователей
$stmt = $pdo->query("SELECT * FROM users");

Это даст нам объект $stmt, который может быть использован для получения актуальных строк.

Получение одной строки

Если запрос должен вернуть только одну строку, то можно просто вызвать метод fetch() переменной $stmt:

// получение последнего зарегистрированного пользователя
$stmt = $pdo->query("SELECT * FROM users ORDER BY id DESC LIMIT 1");
$user = $stmt->fetch();

Обратите внимание, что в PHP вы можете «цепочкой» вызывать методы, вызывая метод уже возвращенного объекта, например:

$user = $pdo->query("SELECT * FROM users ORDER BY id DESC LIMIT 1")->fetch();

Выбор нескольких строк

Существует два способа получения нескольких строк, возвращенных в результате запроса. Самый традиционный способ — использовать метод fetch() в цикле while:

$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch()) {
    echo $row['name']."<br />\n";
}

Этот метод может быть рекомендован, если строки должны обрабатываться по одной. Например, если такая обработка является единственным действием, которое необходимо выполнить, или если данные должны быть как-то предварительно обработаны перед использованием.

Но наиболее предпочтительным способом получения нескольких строк, которые должны быть показаны на странице, является вызов замечательного вспомогательного метода fetchAll(). Он поместит все строки, возвращенные после запроса, в массив PHP, который позже можно будет использовать для вывода данных с помощью шаблона (что считается эффективнее, чем вывод данных прямо во время процесса fetch). Таким образом, код будет выглядеть следующим образом:

$data = $pdo->query("SELECT * FROM users")->fetchAll();
// где-то позднее:
foreach ($data as $row) {
    echo $row['name']."<br />\n";
}

Была ли эта страница полезной?