Quanto a passar um nome de coluna como parâmetro no MySQL (a pergunta no título), isso não é possível em uma instrução SQL. Os identificadores em uma instrução SQL (por exemplo, os nomes das tabelas e das colunas) devem fazer parte do texto SQL. Esses não podem ser passados com um marcador de posição de vinculação.
O
IN
O operador de comparação espera uma lista de valores entre parênteses ou uma consulta SELECT entre parênteses que retorna um conjunto de valores. Não está claro o que você está tentando fazer.
Suspeito que
template_allowed_parent_templates
é uma coluna na tabela e contém uma lista de valores separados por vírgulas. (estremece.) Suspeito que você esteja procurando pelo MySQL
FIND_IN_SET
função string, que "procurará" uma lista separada por vírgulas por um valor específico. Como uma simples demonstração:
SELECT FIND_IN_SET('5', '2,3,5,7')
, FIND_IN_SET('4', '2,3,5,7')
A função retorna um número inteiro positivo quando o valor especificado é "encontrado". Você pode usar essa função em um predicado, por exemplo.
WHERE FIND_IN_SET(id,template_allowed_parent_templates)
ou
WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)
(Isso funciona porque no MySQL um inteiro positivo é avaliado como TRUE em um contexto booleano.)
Estou apenas supondo o que você está tentando realizar.