РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
234 of 258 menu

Метод executeQuery класса Connection

Метод executeQuery класса Connection выполняет SQL-запрос, который возвращает набор строк, например SELECT. Первым параметром передаётся текст SQL-запроса, вторым - массив значений для подстановки в подготовленный запрос, третьим - массив типов этих значений. Метод возвращает объект Result, из которого затем извлекаются данные методами fetchAssociative, fetchAllAssociative и другими.

Синтаксис

public function executeQuery(string $sql, array $params = [], array $types = []): Result

Пример

Давайте выполним простой запрос к таблице article:

<?php namespace App\Repository; use Doctrine\DBAL\Connection; class ArticleRepository { public function __construct(private Connection $connection) { } public function getAll(): array { $sql = 'SELECT * FROM article'; $res = $this->connection->executeQuery($sql); return $res->fetchAllAssociative(); } } ?>

Результат выполнения кода:

[ ['id' => 1, 'title' => 'article 1', 'text' => 'abcde'], ['id' => 2, 'title' => 'article 2', 'text' => 'hello'] ]

Пример

Давайте передадим параметры в подготовленный запрос:

<?php namespace App\Repository; use Doctrine\DBAL\Connection; use Doctrine\DBAL\ParameterType; class ArticleRepository { public function __construct(private Connection $connection) { } public function getById(int $id): array { $sql = 'SELECT * FROM article WHERE id = ?'; $res = $this->connection->executeQuery($sql, [$id], [ParameterType::INTEGER]); return $res->fetchAllAssociative(); } } ?>

Результат выполнения кода для id = 1:

[ ['id' => 1, 'title' => 'article 1', 'text' => 'abcde'] ]

Пример

Давайте используем именованные параметры в запросе:

<?php namespace App\Repository; use Doctrine\DBAL\Connection; class ArticleRepository { public function __construct(private Connection $connection) { } public function findByTitle(string $title): array { $sql = 'SELECT * FROM article WHERE title = :title'; $res = $this->connection->executeQuery($sql, ['title' => $title]); return $res->fetchAllAssociative(); } } ?>

Результат выполнения кода для 'article 1':

[ ['id' => 1, 'title' => 'article 1', 'text' => 'abcde'] ]

Смотрите также

  • класс Connection,
    который управляет соединением с базой данных
  • метод executeStatement,
    который выполняет запросы без выборки строк
  • метод fetchAllAssociative,
    который извлекает все строки результата
  • метод fetchAssociative,
    который извлекает одну строку результата
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить