IF(($q1) > 0, 1, 0)
Dies ist der Teil, der den Fehler zurückgibt.
Auch so, wie Sie es haben, $q1
wird doppelt ausgewertet, was wahrscheinlich nicht das ist, was Sie wollen.
Wenn ich richtig verstehe, was Sie versuchen, dann sollten Sie in der Lage sein, diesen Teil einfach wegzulassen. Wenn $q1
keine Zeilen zurückgibt, dann IN
Ausdruck passt einfach überhaupt nicht zusammen.
Beachten Sie auch, dass IN
mit Unterabfragen ist in MySQL eher ineffizient; würde mit einem Join viel schneller laufen:
SELECT `c_title` FROM `c_content` JOIN ($q1) `a` ON `c_content`.`c_id`=`a`.`bd_h_id`