Как сделать PDO + IN?
Самый простой способ, взять ключи массива и по ним потом "прибиндить" данные, что-то типа:$inValues = [1, 2, 3, 4];
	$inKeys = array_map(function($key){return ':var_'.$key;}, array_keys($inValues));
	
	$sql = 'SELECT * FROM `table` WHERE `field` IN ('.implode(',', $inKeys).')';
	
	echo $sql;
	
	$db = new PDO(...);
	$stmt = $db->prepare($sql);
	
	foreach($inValues as $key=>$val) {
		$stmt->bindParam(':var_'.$key, $val);
	}
с execute аналогично:<?php

	$inValues = [1,2,3,4];
	
	$preparedInValues = array_combine(
		array_map(function($key) {
		   return ':var_'.$key;
		}, array_keys($inValues)),
		array_values($inValues)
	);
			
	$sql = 'SELECT * FROM `table` WHERE `field` IN ('.implode(',', array_keys($preparedInValues)).')';

	echo $sql;

	$db = new PDO(...);
	$stmt = $db->prepare($sql);
	$stmt->execute($preparedInValues);
Честно, не проверял, но по вашей логике примерно следующее:$values = [1, 2, 3];
$in_query = implode(',', array_fill(0, count($values), '?'));
$query = $DB->prepare(sprintf("UPDATE `Ttopic` SET `main`= ?, `main_id`= ?, `type`='".$f['type']."' WHERE `id` IN (%s) LIMIT 10", $in_query));
if($query->execute(array_merge([$main, $theme], $values)) echo 'ok';
Ну и конечно же `type`='".$f['type']."' в запросе это зло.