Jeśli chodzi o przekazanie nazwy kolumny jako parametru w MySQL (pytanie w tytule), nie jest to możliwe w instrukcji SQL. identyfikatory w instrukcji SQL (np. nazwy tabel i nazwy kolumn) muszą być częścią tekstu SQL. Nie można ich przekazać za pomocą symbolu zastępczego powiązania.
IN
Operator porównania oczekuje listy wartości ujętej w nawiasy lub zapytania SELECT ujętego w nawiasy, które zwraca zestaw wartości.
Nie jest jasne, co próbujesz zrobić.
Podejrzewam, że template_allowed_parent_templates
to kolumna w tabeli, która zawiera listę wartości oddzielonych przecinkami. (drżenie.)
Podejrzewam, że możesz szukać MySQL FIND_IN_SET
funkcja string, która "przeszuka" listę oddzieloną przecinkami dla określonej wartości.
Jako prosta demonstracja:
SELECT FIND_IN_SET('5', '2,3,5,7')
, FIND_IN_SET('4', '2,3,5,7')
Funkcja zwraca dodatnią liczbę całkowitą, gdy określona wartość jest „znaleziona”. Możesz użyć tej funkcji w predykacie, np.
WHERE FIND_IN_SET(id,template_allowed_parent_templates)
lub
WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)
(Działa, ponieważ w MySQL dodatnia liczba całkowita jest oceniana jako PRAWDA w kontekście logicznym.)
Zgaduję tylko, co próbujesz osiągnąć.