Ваш запрос возвращает два столбца с одинаковыми именами, поэтому PDO теряется при получении результатов;поскольку каждая запись представлена в виде ассоциативного массива, дубликаты ключей создают неоднозначность (будет сохранен только один ключ).
Вам понадобится создать псевдоним этих столбцов, чтобы убрать неоднозначность:
$query =
"SELECT
`id_affirmation`,
`affirmation`,
`author`,
`user_rate`,
am.date am_date,
am.time am_time,
hua.date AS hua_date,
hua.time AS hua_time
FROM `affirmation_male` am
JOIN `history_user_affirmation` hua ON am.id_affirmation = hua.affirmation_id
WHERE hua.user_id = '" . $id_user . "'
ORDER BY
STR_TO_DATE(hua.date, '%d-%m-%Y') DESC,
hua.time DESC";
Примечания:
также было бы неплохо добавить префикс кпервые столбцы в запросе с псевдонимом таблицы, к которой они принадлежат, поскольку это делает запрос более читабельным (и позволит избежать конфликтов, если когда-либо имена этих столбцов были доступны более чем в одной таблице, входящей в игру в запросе)
Вы можете убрать обратные пометки, чтобы сделать запрос более читабельным, поскольку имена столбцов и таблиц, которые вы цитируете, не содержат специальных символов