När det gäller att skicka ett kolumnnamn som en parameter i MySQL (frågan i rubriken), så är det inte möjligt i en SQL-sats. identifierare i en SQL-sats (t.ex. tabellnamnen och kolumnnamnen) måste vara en del av SQL-texten. De kan inte skickas in med en bindningsplatshållare.
IN
jämförelseoperatorn förväntar sig en lista med värden inneslutna i parens, eller en SELECT-fråga omsluten av parens som returnerar en uppsättning värden.
Det är inte klart vad du försöker göra.
Jag misstänker att template_allowed_parent_templates
är en kolumn i tabellen och den innehåller en kommaseparerad lista med värden. (ryser.)
Jag misstänker att du kanske letar efter MySQL FIND_IN_SET
strängfunktion, som kommer att "söka" i en kommaseparerad lista efter ett visst värde.
Som en enkel demonstration:
SELECT FIND_IN_SET('5', '2,3,5,7')
, FIND_IN_SET('4', '2,3,5,7')
Funktionen returnerar ett positivt heltal när det angivna värdet "hittas". Du kan använda den funktionen i ett predikat, t.ex.
WHERE FIND_IN_SET(id,template_allowed_parent_templates)
eller
WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)
(Detta fungerar eftersom ett positivt heltal i MySQL utvärderas som TRUE i ett booleskt sammanhang.)
Jag gissar bara på vad du försöker åstadkomma.