Per quanto riguarda il passaggio di un nome di colonna come parametro in MySQL (la domanda nel titolo), non è possibile in un'istruzione SQL. Gli identificatori in un'istruzione SQL (ad es. i nomi delle tabelle e delle colonne) deve essere parte del testo SQL. Quelli non possono essere passati con un segnaposto vincolante.
Il IN
l'operatore di confronto prevede un elenco di valori racchiuso tra parentesi o una query SELECT racchiusa tra parentesi che restituisce un insieme di valori.
Non è chiaro cosa stai cercando di fare.
Sospetto che template_allowed_parent_templates
è una colonna della tabella e contiene un elenco di valori separati da virgole. (rabbrividire.)
Sospetto che tu stia cercando MySQL FIND_IN_SET
funzione di stringa, che "cercherà" in un elenco separato da virgole un valore particolare.
Come semplice dimostrazione:
SELECT FIND_IN_SET('5', '2,3,5,7')
, FIND_IN_SET('4', '2,3,5,7')
La funzione restituisce un numero intero positivo quando il valore specificato è "trovato". Puoi utilizzare quella funzione in un predicato, ad es.
WHERE FIND_IN_SET(id,template_allowed_parent_templates)
o
WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)
(Questo funziona perché in MySQL un intero positivo viene valutato come VERO in un contesto booleano.)
Sto solo indovinando cosa stai cercando di ottenere.