IF(($q1) > 0, 1, 0)
Ini adalah bagian yang mengembalikan kesalahan.
Juga, cara Anda memilikinya, $q1 sedang dievaluasi dua kali, yang mungkin bukan yang Anda inginkan.
Jika saya mengerti dengan benar apa yang Anda coba lakukan, maka Anda seharusnya bisa mengabaikan bagian ini. Jika $q1 tidak mengembalikan baris, lalu IN ekspresi sama sekali tidak cocok dengan apa pun.
Perlu diperhatikan juga bahwa IN dengan subqueries agak tidak efisien di MySQL; akan berjalan lebih cepat dengan bergabung:
SELECT `c_title` FROM `c_content` JOIN ($q1) `a` ON `c_content`.`c_id`=`a`.`bd_h_id`