Критично то, понимает ли человек то о чём говорит, или просто как попугай повторяет заученные фразы.
делать так чтобы 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 ничего не
передаётся?
Что за задание? Откуда?
В любом случае делать надо нормально, а не только то, что в задании написано.
Илья Малышкин, а чем принципаильно отличается "закидывание" в БД имени файла от закидывания содержимого?
или, если уж на то пошло, от закидывания любых других данных?
Евгений, Это форматирование идентификаторов.
В данном случае это немного избыточно, и сдеано больше для формальной корректности чем для защиты от инъекций. Поскльку для защиты служит фильтрация. Но от инъекций через идентификаторый защищает тоже.
Только не "все что пытается открыть", а "экранирование удваиванием":
If the character to be included within the identifier is the same as that used to quote the identifier itself, then you need to double the character..