PHP MVC: поиск по заголовкам

товарищи

Не получается организовать поиск по заголовкам постов. Вот код модели:

public function postSearch($posts) : array
{
    $sql = "SELECT id, title, content, dateAdded, dateModified FROM posts WHERE title LIKE :termin";
    $req = $this->db->prepare($sql);
    $req->execute();
    return $req->fetchAll(\PDO::FETCH_CLASS, Post::class);
}

Вот код контроллера:

public function search(HTTPRequest $req): void
{
    $termin = $_POST['termin'];
    $posts = $this->postManager->postSearch([
        'termin' => "%$termin%"
    ]);
    $this->show('../App/View/search.php', compact('termin', 'posts'));
}

Т. е. нужно чтобы после ввода в форму заголовка, выводилась превьюха статьи (это уже в виде). Массив $posts — пустой. Если в запросе вместо маски %termin% указывать конкретный заголовок, то всё выводится. Выходит, контроллер не понимает маску?


Ответы (1 шт):

Автор решения: u_mulder
public function postSearch($termin) : array
{
    $sql = "SELECT id, title, content, dateAdded, dateModified FROM posts WHERE title LIKE :termin";
    $req = $this->db->prepare($sql);
    $req->execute(['termin' => $termin]);
    return $req->fetchAll(\PDO::FETCH_CLASS, Post::class);
}

Так как в контроллере в postSearch передается массив, то тогда правильней так:

public function postSearch($termin) : array
{
    $sql = "SELECT id, title, content, dateAdded, dateModified FROM posts WHERE title LIKE :termin";
    $req = $this->db->prepare($sql);
    $req->execute($termin);
    return $req->fetchAll(\PDO::FETCH_CLASS, Post::class);
}
→ Ссылка