Đối với việc chuyển tên cột dưới dạng tham số trong MySQL (câu hỏi trong tiêu đề), điều đó không thể thực hiện được trong một câu lệnh SQL. Số nhận dạng trong một câu lệnh SQL (ví dụ:tên bảng và tên cột) phải là một phần của văn bản SQL. Không thể chuyển chúng bằng trình giữ chỗ ràng buộc.
IN
toán tử so sánh mong đợi một danh sách các giá trị được bao trong các parens hoặc một truy vấn SELECT trong các parens trả về một tập hợp các giá trị.
Không rõ bạn đang cố gắng làm gì.
Tôi nghi ngờ rằng template_allowed_parent_templates
là một cột trong bảng và nó chứa danh sách các giá trị được phân tách bằng dấu phẩy. (rùng mình.)
Tôi nghi ngờ rằng bạn có thể đang tìm kiếm FIND_IN_SET
trong MySQL hàm chuỗi, sẽ "tìm kiếm" một danh sách được phân tách bằng dấu phẩy cho một giá trị cụ thể.
Như một minh chứng đơn giản:
SELECT FIND_IN_SET('5', '2,3,5,7')
, FIND_IN_SET('4', '2,3,5,7')
Hàm trả về một số nguyên dương khi giá trị được chỉ định được "tìm thấy". Bạn có thể sử dụng chức năng đó trong một vị từ, ví dụ:
WHERE FIND_IN_SET(id,template_allowed_parent_templates)
hoặc
WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)
(Điều này hoạt động vì trong MySQL, một số nguyên dương được đánh giá là ĐÚNG trong ngữ cảnh boolean.)
Tôi chỉ đoán những gì bạn đang cố gắng đạt được.