Z twoim podejściem jest kilka problemów. Przede wszystkim nie możesz użyć argumentu wartość aby odwołać się do podstawowej kolumny. Dobrą rzeczą jest to, że możesz użyć Przygotowane oświadczenia jako obejście tego.
Drugim problemem jest to, że funkcje MySQL nie pozwalają na użycie przygotowanych instrukcji. Aby obejść to ograniczenie, musisz zamiast tego użyć Procedury składowane. Jako przykład:
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