Er zijn een paar problemen met uw aanpak. Allereerst kunt u uw argument waarde niet gebruiken om naar de onderliggende kolom te verwijzen. Het goede is dat je Prepared Statements kunt gebruiken als tijdelijke oplossing hiervoor.
Het tweede probleem is dat MySQL-functies het gebruik van voorbereide instructies niet toestaan. Om die beperking te omzeilen, moet u in plaats daarvan Stored Procedures gebruiken. Als voorbeeld:
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