Для того, чтобы не повторять программный код, специально были придуманы
подпрограммы.
Когда один и тот же код может выполняться для разных наборов данных.
В РНР есть несколько способов сделать подпрограмму, но самый удобный - это написать функцию.
Важно только соблюдать чувство меры и принцип единственной ответственности - функция должна делать что-то одно. К примеру, если она должна что-то писать в базу данных, то не должна при этом с базой соединяться.
function save_data($pdo, $data, $type) {
$stmt = $db->prepare('INSERT INTO ads (snippet, amp, date, anchor, link,type)
VALUES (:snippet,:amp,:date,:anchor, :link, :type)');
$pdo->beginTransaction();
foreach ($data as $values) {
$values['type'] = $type;
$stmt->execute($values);
}
$pdo->commit();
}
Как я уже писал ранее, для скорости и консистентности множественные вставки желательно заключить в транзакцию.
И вызывать примерно так
$db = new PDO('mysql:host=localhost;dbname=test', 'root', '');
// ТОЛЬКО EXCEPTION! c warning-ами в детский сад ходите детей пугать
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$file = file_get_contents("ads.json");
$data = json_decode($file, true);
save_data($db, $data['p1']['ads'], 'ads');
$file = file_get_contents("May-12_17-57-28.json");
$data = json_decode($file, true);
save_data($db, $data['p1']['serp'], 'serp');
На этом этапе, посмотрев на повторяющийся код, можно сделать еще одну итерацию
function import_data($filename, $type, $pdo) {
$file = file_get_contents($filename);
$data = json_decode($file, true);
save_data($pdo, $data['p1'][$type], $type);
}
Но можно уже и не частить