Wat betreft het doorgeven van een kolomnaam als parameter in MySQL (de vraag in de titel), dat is niet mogelijk in een SQL-statement. De ID's in een SQL-instructie (bijvoorbeeld de tabelnamen en kolomnamen) moet deel uitmaken van de SQL-tekst. Die kunnen niet worden doorgegeven met een tijdelijke aanduiding voor binden.
De IN
vergelijkingsoperator verwacht een lijst met waarden tussen haakjes, of een SELECT-query tussen haakjes die een reeks waarden retourneert.
Het is niet duidelijk wat je probeert te doen.
Ik vermoed dat template_allowed_parent_templates
is een kolom in de tabel en bevat een door komma's gescheiden lijst met waarden. (huiver.)
Ik vermoed dat je op zoek bent naar de MySQL FIND_IN_SET
string-functie, die een door komma's gescheiden lijst "zoekt" naar een bepaalde waarde.
Als een eenvoudige demonstratie:
SELECT FIND_IN_SET('5', '2,3,5,7')
, FIND_IN_SET('4', '2,3,5,7')
De functie retourneert een positief geheel getal wanneer de opgegeven waarde "gevonden" is. U kunt die functie gebruiken in een predikaat, bijvoorbeeld
WHERE FIND_IN_SET(id,template_allowed_parent_templates)
of
WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)
(Dit werkt omdat in MySQL een positief geheel getal wordt geëvalueerd als WAAR in een booleaanse context.)
Ik gok alleen wat je probeert te bereiken.