Для правильного вопроса надо знать половину ответа
Стандартно - в отдельной таблице связи многие-ко-многим.
Современный способ - в колонке с типом JSON.
Говнокод - в строке через запятую или другой разделитель.
Для правильного вопроса надо знать половину ответа
Скорее всего, Windows по метаданным обнаружил, что это два начертания (regular и bold) одного и того же шрифта, и зарегистрировал их как один, автоматически переключаясь при смене начертания.
Для правильного вопроса надо знать половину ответа
Не путайте кэш и хэш.
Делать такое надо на бэкенде. Что у вас там есть - PHP или Node.js, на том и делать.
Но я бы сделал отдельный скрипт, который по крону обновляет данные в БД.
Для правильного вопроса надо знать половину ответа
Выведите через var_dump сформированную строку запроса и массив параметров. Убедитесь, что в массиве есть все параметры, указанные в запросе, и нет ни одного лишнего параметра.
Для правильного вопроса надо знать половину ответа
let playlist = [...element.querySelectorAll('[data-mp3]')]
.map(el => el.dataset.mp3);
А HTML вы генерируете с ошибкой. Во-первых, значения всех атрибутов тэга должны быть в кавычках, лучше в двойных. Во-вторых, id тэга не должен повторяться в пределах страницы.