Sejauh melewati nama kolom sebagai parameter di MySQL (pertanyaan dalam judul), itu tidak mungkin dalam pernyataan SQL. Identifier dalam pernyataan SQL (misalnya nama tabel dan nama kolom) harus menjadi bagian dari teks SQL. Itu tidak dapat diteruskan dengan placeholder bind.
IN
operator perbandingan mengharapkan daftar nilai yang diapit oleh parens, atau kueri SELECT yang diapit oleh parens yang mengembalikan sekumpulan nilai.
Tidak jelas apa yang Anda coba lakukan.
Saya menduga bahwa template_allowed_parent_templates
adalah kolom dalam tabel, dan berisi daftar nilai yang dipisahkan koma. (bergidik.)
Saya menduga Anda mungkin mencari MySQL FIND_IN_SET
fungsi string, yang akan "mencari" daftar yang dipisahkan koma untuk nilai tertentu.
Sebagai demonstrasi sederhana:
SELECT FIND_IN_SET('5', '2,3,5,7')
, FIND_IN_SET('4', '2,3,5,7')
Fungsi mengembalikan bilangan bulat positif ketika nilai yang ditentukan "ditemukan". Anda dapat menggunakan fungsi itu dalam predikat, mis.
WHERE FIND_IN_SET(id,template_allowed_parent_templates)
atau
WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)
(Ini berfungsi karena di MySQL bilangan bulat positif dievaluasi sebagai TRUE dalam konteks boolean.)
Saya hanya menebak apa yang ingin Anda capai.