Има няколко проблема с вашия подход. Първо, не можете да използвате своя аргумент стойност за препратка към основната колона. Хубавото е, че можете да използвате Подготвени отчети като заобиколно решение за това.
Вторият проблем е, че MySQL функциите не позволяват използването на Prepared Statements. За да заобиколите това ограничение, трябва вместо това да използвате съхранени процедури. Като пример:
CREATE PROCEDURE test_func (IN col1 varchar(100), OUT res int)
BEGIN
SET @s=CONCAT('SELECT ',col1,' INTO @res FROM yourtable WHERE id=1');
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
SELECT @res INTO res;
END