Вы действительно не хотите делать что-то вроде foreach. Не думайте о SQL как о процедурном, как большинство кода (где вы делаете одно, потом второе и так далее). Вы должны думать об этом как о множестве на основе, где вам нужно что-то для больших кусков, которые отвечают определенным требованиям. Что-то вроде:
INSERT INTO term_nodes (tid, x, nid) -- these are the field names
<subquery that selects all the data>
Подзапрос должен просто выбрать все данные, которые вы хотите вставить, возможно что-то вроде:
SELECT nodeId, 4, termId FROM nodes WHERE contentType = X
Итак, сложив все вместе, вы получите:
INSERT INTO term_nodes (tid, x, nid)
SELECT nodeId, 4, termId FROM nodes WHERE contentType = X
Не нужно пытаться пробежаться по каждому элементу подзапроса и вставлять их по одному, просто сделайте все сразу.
Вот хорошая статья, которую я нашел о процедурном и основанном на множестве SQL , которая может помочь вам немного лучше понять концепцию.