Да, разумеется.
Главная причина, по которой мы используем объекты - это не чтобы выглядеть круто, а чтобы не писать один и тот же код по 800 раз.
поэтому код выполнения запроса мы пишем в функцию, и потом все время используем её в других функциях.
Критично то, понимает ли человек то о чём говорит, или просто как попугай повторяет заученные фразы.
делать так чтобы query принимала $sql и $data, а execute - только $sql это непонимание.
отсутствие информации о том, как увидеть ошибки - это критично
работа программиста всегда проходит в режиме получения обратной связи от программы. Чтобы не ходить вот так уокруг да около, не зная в чем проблема.
в опциях все интуитивно же. ну кроме эмуляции
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, - сообщать об ошибках
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC, - возвращать ассоциативный массив по умолчанию
\PDO::ATTR_EMULATE_PREPARES => false, - в LIMIT можно использовать плейсхолдеры, LIMIT ?,?. Без этого будет ошибка
никогда не нужно узнавать, тру или фолс. это бессмысленная информация.
вместо этого функция должна возвращать $sth, чтобы получить сопутствующие запросу данные, например количество удаленных строк или же сами строки в случае запроса селект
удаление или добавление записей в таблице надо делать с помощью плейсхолдеров, а execute их не поддерживает.
Мануал по ошибкам читать не надо, там много всякой ерунды написано. Лучше докучать. Я очень люблю глупые вопросы и очень не люблю вороватых преподавателей, которые берут деньги но сами программирования не знают. В оличие от них я понимаю, что делает кажда строчка в моем коде, и могу это объяснить.
вот у тебя и есть две функции. первая выполняет любые запросы, а вторая чисто выборку делать. Что не так?
твоя execute была, мягко говоря, дурацкая. какой смысл делать prepare, если в execute ничего не
передаётся?
Что за задание? Откуда?
В любом случае делать надо нормально, а не только то, что в задании написано.