Посоветовали мне получить параметры итемов отдельно одним запросом и получилось следующее
public function items_getUserItems($user_id)
{
$sth = $this->dbh->prepare('SELECT * FROM user_items WHERE user = :user_id');
$sth->execute(array(
':user_id' => intval($user_id),
));
$items = $sth->fetchAll(PDO::FETCH_ASSOC);
$count = count($items);
$item_ids = array();
$item_index = array();
for($i=0; $i<$count; $i++)
{
$items[$i]['params'] = array();
$item = $items[$i];
$item_ids[] = $item['id'];
$item_index[$item['id']] = $i;
}
$sth = $this->dbh->prepare('SELECT * FROM user_item_params WHERE item IN ('.implode(', ', $item_ids).');');
$sth->execute();
$item_params = $sth->fetchAll(PDO::FETCH_ASSOC);
foreach($item_params as $item_pram)
{
$item = $item_pram['item'];
unset($item_pram['item']);
$items[$item_index[$item]]['params'][] = $item_pram;
}
return $items;
}
А еще я обдумывал вариант с параметрами в поле первой таблицы в виде json строки...