Этот класс - тупо набор функций. Причем для следующей таблицы придется писать точно такой же.
Что будет, если значения двух последних элементов массива совпадут? Тогда уж надо ключи сравнивать, а не значения.
И зачем вообще такие ухищрения с поиском последнего элемента, если у тебя есть переменная $fields? Если она пустая - значит это первый оборот цикла. Всё, этого достаточно
$set = "";
foreach($params as $key => $value)
{
if ($key !== $this->primary)
$set .= ($set ? "," : "") . "`$key` = :$key";
}
}
Список полей всегда надо писать явно.
Но вообще я не рекомендую использовать именованные плейсхолдеры для автоматических запросов. В имени поля могут встречаться символы (например пробелы), которые не годятся для имен плейсхолдеров
комментарии служат для того, чтобы ты сам немного задумался над проблемами своего кода
а не просто раскрыл ротик в ожидании готового решения
но главная проблема этого кода в том что кроме юзеров у тебя будут ещё какие-нибудь статьи.
ты в updateArticle тоже вот это вот всё будешь писать?
Без протокола были какие-то проблемы, что пришлось его добавить, сейчас уже не вспомню - какие.