Плохо, плохо... Почему у вас в программировании всё так плохо?!
ПРАВИЛЬНЫЙ вариант вашего кода:
$sql_array = array();
foreach($product['oc_product_description'] as $k => $v){
$sql_array[] = "{$k} = ?";
}
$this->db->prepare("INSERT INTO oc_product_description SET ".implode(", ", $sql_array))->execute(array_values($product['oc_product_description']));
unset($sql_array);
Но если у вас действительно
ЕСТЬ необходимость создавать столько записей (напрягитесь, осознайте далее написанное), сколько всего
ПОЛЕЙ (ну типа там
id,type,num,cost,category_id,sklad,etc) в таблице - тогда приведённый выше код нужно поменять. Но я сильно сомневаюсь, что вам нужна толпа записей вида:
id=100
id=100, type=tovar
id=100, type=tovar, num=10
id=100, type=tovar, num=10, cost=26.4
id=100, type=tovar, num=10, cost=26.4, category_id=4
id=100, type=tovar, num=10, cost=26.4, category_id=4, sklad=true
id=100, type=tovar, num=10, cost=26.4, category_id=4, sklad=true, etc=...
А именно так ваш код заполняет таблицу, дополняя запрос поле за полем, размножая записи как тараканов.
Вердикт: Вы хоть вдумываетесь, что вы творите?!