спасибо за помощь, я решил проблему иначе
я решил вывести все значения одним запросом, а потом в цикле перебрать и сгруппировать
select
`od`.`name`, `ovd`.`name`, `ovd`.`option_value_id`, `pov`.`option_id`, `ov`.`image`
from `products` as `p`
left join `product_option_values` as `pov` on `p`.`id` = `pov`.`product_id`
left join `option_descriptions` as `od` on `pov`.`option_id` = `od`.`option_id`
left join `option_value_descriptions` as `ovd` on `pov`.`option_value_id` = `ovd`.`option_value_id`
left join `options` as `o` on `pov`.`option_id` = `o`.`id`
left join `option_values` as `ov` on `pov`.`option_value_id` = `ov`.`option_id`
where
`p`.`id` in (1, 5, 2)
and
`ovd`.`language_id` = 1
and
`od`.`language_id` = 1
group by
`od`.`name`,
`ovd`.`name`,
`pov`.`option_value_id`,
`pov`.`option_id`,
`ov`.`image`
order by
`od`.`name` asc,
`ovd`.`name` asc