For så vidt angår at overføre et kolonnenavn som en parameter i MySQL (spørgsmålet i titlen), er det ikke muligt i en SQL-sætning. identifikatorerne i en SQL-sætning (f.eks. tabelnavne og kolonnenavne) skal være en del af SQL-teksten. Disse kan ikke sendes ind med en bind-pladsholder.
IN
sammenligningsoperator forventer en liste over værdier indesluttet i parens eller en SELECT-forespørgsel omsluttet af parens, der returnerer et sæt værdier.
Det er ikke klart, hvad du forsøger at gøre.
Jeg formoder, at template_allowed_parent_templates
er en kolonne i tabellen, og den indeholder en kommasepareret liste over værdier. (gys.)
Jeg formoder, at du måske leder efter MySQL FIND_IN_SET
strengfunktion, som vil "søge" i en kommasepareret liste efter en bestemt værdi.
Som en simpel demonstration:
SELECT FIND_IN_SET('5', '2,3,5,7')
, FIND_IN_SET('4', '2,3,5,7')
Funktionen returnerer et positivt heltal, når den angivne værdi er "fundet". Du kan bruge den funktion i et prædikat, f.eks.
WHERE FIND_IN_SET(id,template_allowed_parent_templates)
eller
WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)
(Dette virker, fordi et positivt heltal i MySQL vurderes som SAND i en boolsk kontekst.)
Jeg gætter kun på, hvad du forsøger at opnå.