В параметре $bookId методу передается значения поля id выбранной книги. Обратите внимание на то, как мы формируем запрос. В строке запроса вместо значения параметра id мы ставим знак вопроса. А методу query() в качестве второго параметра передаем массив со значениями. При отправке запроса значения будут подставлены вместо знаков вопроса. Что дает такой подход? Во-первых, запрос легче читается. Во-вторых, все спецсимволы SQL будут автоматически преобразованы в эскейп последовательности. Примечание. Если вы формируете строку с параметрами запроса самостоятельно, не забывайте использовать метод escape(). Например, так $this->db->escape($title). Это позволит защититься от SQL Injection. Дальнейшая работа метода практически полностью аналогична getAllBooks().
Единственное отличие заключается в том, что в данном случае мы возвращаем только первый элемент массива с результатами, т. к. в нем не может быть больше одного элемента. Все, модель нашего каталога готова. В следующий раз мы допишем контроллер и создадим страницы нашего каталога. До встречи!