En ce qui concerne le passage d'un nom de colonne en tant que paramètre dans MySQL (la question dans le titre), ce n'est pas possible dans une instruction SQL. Les identifiants dans une instruction SQL (par exemple, les noms de table et les noms de colonne) doivent faire partie du texte SQL. Ceux-ci ne peuvent pas être transmis avec un espace réservé de liaison.
Le IN
L'opérateur de comparaison attend une liste de valeurs entre parenthèses ou une requête SELECT entre parenthèses qui renvoie un ensemble de valeurs.
Ce que vous essayez de faire n'est pas clair.
Je soupçonne que template_allowed_parent_templates
est une colonne de la table et contient une liste de valeurs séparées par des virgules. (frisson.)
Je soupçonne que vous recherchez le MySQL FIND_IN_SET
fonction de chaîne, qui "recherchera" une liste séparée par des virgules pour une valeur particulière.
En guise de démonstration simple :
SELECT FIND_IN_SET('5', '2,3,5,7')
, FIND_IN_SET('4', '2,3,5,7')
La fonction renvoie un entier positif lorsque la valeur spécifiée est "trouvée". Vous pouvez utiliser cette fonction dans un prédicat, par exemple
WHERE FIND_IN_SET(id,template_allowed_parent_templates)
ou
WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)
(Cela fonctionne car dans MySQL, un entier positif est évalué comme TRUE dans un contexte booléen.)
Je ne fais que deviner ce que vous essayez d'accomplir.