Лучшее решение здесь - перестать использовать href="javascript:…
и начать использовать ненавязчивый JavaScript и прогрессивное улучшение .
Если вы хотите продолжить движение по этому маршруту, вам следует помнить, что вы имеете дело с тремя различными языками и генерируете один из другого в цепочке.
Начните с JavaScript. Затем заставьте это работать с HTML. Затем заставьте его работать с PHP.
javascript:playSong('Danny Elfman','Beetlejuice "Theme" (Kamei Halloween Edit)','2009-10-31-10-52-01.4521.data','28330')
Здесь нет синтаксических ошибок. У вас просто двойные кавычки в строке.
href="javascript:playSong('Danny Elfman','Beetlejuice "Theme" (Kamei Halloween Edit)','2009-10-31-10-52-01.4521.data','28330')"
Теперь вы вложили JavaScript в атрибут HTML, который разделен двойными кавычками. Это означает, что двойные кавычки в JS теперь являются проблемой, поскольку они заканчивают значение атрибута на полпути через сценарий.
Обработайте эти цитаты обычным для HTML способом. Замените их HTML-сущностью: "
href="javascript:playSong('Danny Elfman','Beetlejuice "Theme" (Kamei Halloween Edit)','2009-10-31-10-52-01.4521.data','28330')"
Тогда перейдем к PHP:
echo '<a href="javascript:playSong'."('$row[artist]','$row[title]','$row[sourcefile]')".'">';
Работа с кавычками внутри кавычек внутри кавычек - это боль. Так что не пытайтесь.
href="javascript:playSong('<?php echo $row[artist] ?>','<?php echo $row[title] ?>','<?php echo $row[sourcefile]; ?>')"
Кажется, вы потеряли аргумент между примерами там.
Следуйте обычным правилам вставки контента в HTML с помощью PHP: htmlspecialchars
href="javascript:playSong('<?php echo htmlspecialchars($row[artist]); ?>','<?php echo htmlspecialchars($row[title]); ?>','<?php echo htmlspecialchars($row[sourcefile]); ?>')"