IF(($q1) > 0, 1, 0)
C'est la partie renvoyant l'erreur.
Aussi, comme vous l'avez, $q1
est évalué deux fois, ce qui n'est probablement pas ce que vous voulez.
Si je comprends bien ce que vous essayez de faire, vous devriez pouvoir simplement laisser cette partie de côté. Si $q1
ne renvoie aucune ligne, puis le IN
l'expression ne correspondra tout simplement à rien du tout.
Il convient également de noter que IN
avec des sous-requêtes est plutôt inefficace dans MySQL ; s'exécuterait beaucoup plus rapidement avec une jointure :
SELECT `c_title` FROM `c_content` JOIN ($q1) `a` ON `c_content`.`c_id`=`a`.`bd_h_id`