Вот так:
$rows = $bd->exec("INSERT INTO test (tab$j) VALUES ('$nomer')");
У вас не срабатывает текущий вариант из-за того, что вы пишете так: '{$j}'. Дело в том, что в одиночных кавычках подстановка значения переменной не происходит. Для подстановки значения нужно использовать двойные кавычки. Я проиллюстирую:
$variable = 'John';
echo 'Hello, $variable'; // Выведет: Hello, $variable
echo "Hello, $variable"; // Выведет: Hello, John
Так же, судя по вашему коду, под tab0 и tab1 подразумеваются названия
полей в таблице
test, а не названия отдельных таблиц tab0 и tab1.
И, под конец: несмотря на то, что вы используете PDO, вы зачем-то пихаете значение переменной в строку запроса напрямую, как это делается при использовании mysql_query(); Это ни на грамм не добавляет безопасности такому запросу. Почитайте про
подготовленные запросы в PDO. Если не ошибаюсь, вот такая конструкция может сработать:
$st = $bd->prepare("INSERT INTO test (tab$j) VALUES (?)");
$st->execute(array($nomer));
$rows = $st->rowCount();